powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удвоить апострофы
12 сообщений из 12, страница 1 из 1
Удвоить апострофы
    #32738826
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФАК читал.
Но функции DoubleQuote, DoubleApostrophe Акцесс 97 не видит - они как бы не определены. Replace - то же самое.
Подскажите более или менее оптимальный алгоритм функции типа Replace, либо какой референс мне нужно подключить, чтобы появилась аналогичная встроенная функция.

У меня сейчас подключены:
Visual Basic for Applications
Microsoft Access 8.0 Object library
Microsoft DAO 3.51 Object library
Microsoft ActiveX Data Objects 2.8 library
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32738868
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если я не ошибаюсь, эта функция и не должна быть встроенной. Я ее пишу так:

function XXX(s as string)as string
dim s0 as string,c as string*1,i as integer
s0=""
for i=1 to len(s)
c=mid(s,i,1)
s0=s0 &c
if c="""" then s0=s0 &c
next
XXX=s0
end function
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32738881
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
public function DoubleQuote(byval str as string, optional cQuote as string = "'") as string
dim i as integer
i=instr(1,str,cquote)
do while i>0
str=left(str,i-1) & cQuote & mid(str,i)
i=instr(i,str,cquote)
loop
DoubleQuote=str
end function

(не проверяю)
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32738883
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опоздал :(
:)
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32738953
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, спасибо за подсказки!

Лично мне на первый взгляд больше нравится функция Гео, только она зацикливается :-)
Поправлю - выложу до кучи.
Хотя, если честно, мне теперь непонятно почему в ФАКе Акцесса выложены примеры использования DoubleQuote & DoubleApostrophe, когда их нет в Акцессе. Надо бы поправить...
И уж Replace встроенного нет - это вообще разочарование/удивление/огорчение (нужное подчеркнуть).
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32738959
Гео
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортолько она зацикливается


public function DoubleQuote(byval str as string, optional cQuote as string = "'") as string
dim i as integer
i=instr(1,str,cquote)
do while i>0
str=left(str,i-1) & cQuote & mid(str,i)
i=instr(i,str,cquote)+2
loop
DoubleQuote=str
end function
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32738973
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Function DoubleQuote(ByVal str As String, Optional cQuote As String = "'") As String
  Dim i As Integer
  
  i = InStr( 1 , str, cQuote)
  Do While i >  0 
    str = Left(str, i -  1 ) & cQuote & Mid(str, i)
    i = InStr(i +  2 , str, cQuote)
  Loop
  DoubleQuote = str
End Function
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32738990
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня получилось вот что:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function DoubleChar(s As String, Optional cChar As String = "'") As String
    Dim i As Integer
    i = InStr( 1 , s, cChar)
    Do While i >  0 
        s = Left(s, i) & Right(s, Len(s) - i +  1 )
        i = InStr(i +  2 , s, cChar)
    Loop
    DoubleChar = s
End Function
Сильно не тестил, но вроде в моем случае отработала
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32738998
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда уж

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function DoubleQuote(ByVal s As String, Optional cQuote As String = "'") As String
  Dim i As Integer
  
  i = InStr( 1 , s, cQuote)
  Do While i >  0 
    s = Left(s, i) & Mid(s, i)
    i = InStr(i +  2 , s, cQuote)
  Loop
  DoubleQuote = s
End Function
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32739013
Yanis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geoтогда уж

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function DoubleQuote(ByVal s As String, Optional cQuote As String = "'") As String
  Dim i As Integer
  
  i = InStr( 1 , s, cQuote)
  Do While i >  0 
    s = Left(s, i) & Mid(s, i)
    i = InStr(i +  2 , s, cQuote)
  Loop
  DoubleQuote = s
End Function
Точно!
И тут же предлагаю положить ее в ФАК...
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32739921
Дмитрий16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yanis Geoтогда уж

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function DoubleQuote(ByVal s As String, Optional cQuote As String = "'") As String
  Dim i As Integer
  
  i = InStr( 1 , s, cQuote)
  Do While i >  0 
    s = Left(s, i) & Mid(s, i)
    i = InStr(i +  2 , s, cQuote)
  Loop
  DoubleQuote = s
End Function
Точно!
И тут же предлагаю положить ее в ФАК...

А чем господ не устраивает
DoubleApostrophe = Replace(s, "'", "''")
????
...
Рейтинг: 0 / 0
Удвоить апострофы
    #32739933
Kelme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YanisНо функции DoubleQuote, DoubleApostrophe Акцесс 97 не видит - они как бы не определены. Replace - то же самое .

Дмитрий16А чем господ не устраивает
DoubleApostrophe = Replace(s, "'", "''")
????

самый умный, да? ;)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Удвоить апострофы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]