Alex_Piter
Дата: 06.09.2005 10:26:50
Доброго времени суток всем. Столкнулся с такой вот нетривиальной ситуацией, когда текстовая переменная, принимая значение слова с апострофом, вываливает ошибку синтаксиса (Run-time error '3075') - пропущен оператор в выражении запроса. Даже понятно, почему вылазит эта ошибка - потому что Access'у не разрулить три апострофа одновременно, но это ничего не дает. Мне важно знать другое - есть ли какой-нибудь способ это побороть, не изменяя содержание самой текстовой переменной (т.к. это название фирмы-производителя, по которому производится отбор ее продукции в запросе)? Или только удалением "лишнего" (что крайне нежелательно) апострофа из текстовой строки?
Заранее благодарен за ответы.
Alex_Piter
Дата: 06.09.2005 12:42:52
Proga, вот код:
Private Sub Proizvoditeli_tob_AfterUpdate()
Dim Proizvodtob As Variant
Proizvodtob = Proizvoditeli_tob.Value
If IsNull(Proizvodtob) Then Proizvodtob = ""
If Proizvodtob <> "" Then Proizvodtob_Where = " AND (Nom_oborud.Firma ='" & Proizvodtob & "')" Else Proizvodtob_Where = ""
CurrentDb.Execute ("DELETE * FROM Obor_naideno")
DoEvents
CurrentDb.Execute ("INSERT INTO Obor_naideno ( [Code_nom], [Gruppa_oborud], [Podgruppa_oborud], [Naimenovanie], [Marka], [Temp_rezh], [Power], [Komplekt], [Firma], [Measures], [Volume], [Konst_osob], [Price_post], [Price_otp]) " _
& "SELECT Nom_oborud.Code_nom, Nom_oborud.Gruppa_oborud, Nom_oborud.Podgruppa_oborud, Nom_oborud.Naimenovanie, Nom_oborud.Marka, Nom_oborud.Temp_rezh, Nom_oborud.Power, Nom_oborud.Komplekt, Nom_oborud.Firma, Nom_oborud.Measures, Nom_oborud.Volume, Nom_oborud.Konst_osob, Nom_oborud.Price_post, Nom_oborud.Price_otp " _
& "FROM Nom_oborud " & Proizvodtob_Where & ";")
DoEvents
Me!Obor_podch_2S_addnew.Requery
End Sub
Элементарная выборка из таблицы при помощи поля со списком.
Владимир Саныч, спасибо за совет, вот только где ж эту самую функцию DoubleApostrophe() искать? Я так понимаю, что это какая-то пользовательская приблуда, поскольку Access ее не опознает... :-( И в FAQ на эту тему ничего нет... :-(
AndrewNico
Дата: 06.09.2005 12:48:46
Я бы сделал так:
Proizvodtob = Replace(Proizvodtob,"'","''")
Но, это простейший выход из положения...
Alex_Piter
Дата: 06.09.2005 13:05:31
AndrewNico, спасибо, все получилось! :-)
Allll, за код функции отдельное спасибо. Перекопировал в надежное место, попробую как с ней работает. :-)