| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS Access > Кавычки в строке |
| Автор: Zahny 18.4.2005, 10:35 | ||||
Каким символом показать, что " или ' - это не конец (начало) строки, а просто текст. Например при формировании SQL-запросов
или
? И если при поиске в строке поиска (в Form_Meetings.Purpose) тоже будут использованы кавычки, они ведь тоже будут истолкованы, как конец(начало) строки. Как с этим борться? Спасибо |
| Автор: Akina 18.4.2005, 11:57 | ||||
Вопрос неясен. Если задача - в литерале вставить кавычку, то просто удвой ее
потому как стринговой переменной до звезды, кавычка там или нет - это для компилера кавычка не простой символ, а управляющий. Что же до
то, пардон, КЕМ они будут так истолкованы??? уж никак не оператором присвоения. соответственно вопросы движку поиска - а уж у него есть какие-нить правила квотирования служебных символов... |
| Автор: Zahny 18.4.2005, 12:24 |
| С двойными кавычками поняла. Спасибо. Просто ведь в разных языках - разные способы. А Basicу меня никто не учил, вот и не знаю таких мелочей. С поиском, следовательно, тоже понятно.Теперь, правда, проблема с длиной строки. Ну ладно, сама разберусь. Спасибо за помощь |
| Автор: Akina 18.4.2005, 12:44 | ||
Это ты к чему? какая может быть проблема с длиной строки - в оперативку не лезет, что ли? |
| Автор: Zahny 18.4.2005, 17:13 | ||
Это я к тому, что в переменную типа String влезает не бесконечное количество символов |
| Автор: Akina 18.4.2005, 18:16 | ||
2 Гб на строку - и тебе ЭТОГО мало??? |
| Автор: Zahny 19.4.2005, 09:36 | ||
| Мне-то достаточно. Только почему он в таком случае мне строку обрезает?! Строка объявлена, как
Насколько я поняла после прочтения хелпа - это строка неограниченной длины. Так в чем проблема?! |
| Автор: Akina 19.4.2005, 09:48 | ||
Не верю! © Станиславский Сюда - содержимое строки ДО обрезки, оператор, на котором происходит обрезка (со значениями переменных), строка ПОСЛЕ обрезки. |
| Автор: Zahny 19.4.2005, 10:06 | ||
| У! Ну ладно, напишу, как могу...
Это в кратце, как он формирует строку. Если в Строка1 в поле очень много написано, то он обрезает, во-первых, то, что в поле, во-вторых, не дописывает всё, что должен дописывать потом. Например, ORDER BY M.Date Asc Пример строки из дебаггера после выполнения кода: sql="SELECT M.ID as MeetId, T.CNames as [Names of clients], M.Date, M.Purpose, T.SNames AS [Names of Siemens co-workers] FROM Meetings as M, tblTmp as T WHERE T.MID=M.ID AND M.Date Like "*12.12.2004*" AND M.Purpose LIKE "*s1s2s3s4s5s6s7s8s9s10s11s12s13s141" Куда делось продолжение? |
| Автор: Akina 19.4.2005, 10:24 | ||||||
А если на строке 11 поставить брейкпойнт и посмотреть как изменяется строка при пошаговом выполнении?
Попробуй сперва собрать все параметры в отдельные переменные и потом уже слепить строку запроса - типа (draft code!!!)
|
| Автор: Zahny 19.4.2005, 10:46 | ||
При пошаговом выполнении: просто добавляет, сколько может, а потом строка больше не меняется. Что за draft code? В Хелпе не нашла |
| Автор: Akina 19.4.2005, 10:53 | ||||||||||
draft code = написан левой пяткой
А сколько может? см. как меняется len(sql)... Как вариант
Добавлено @ 10:55 но вообще чудеса... Добавлено @ 10:59 Впрочем еще предположение из разряда безумных... попробуй не
а
и посмотри что в Temp останется... нет ли там служебных символов... |
| Автор: Zahny 19.4.2005, 11:47 | ||||
| Сейчас с ума сойду... Результаты испытаний: 1.
Меняется, как и положено: растет... постоянно, хотя содержимое строки не меняется 2.
3. c Temp'ом не проходит. Мне он никаких служебных символов не показал. И потом, если в поле написано 2-3 слова, ничего не обрезается. Сейчас попробую с кучей переменных draft code. |
| Автор: Akina 19.4.2005, 11:58 | ||||
Отлично!!! у тебя где-то в строку затесался служебный символ. Ищи его.
LSET |
| Автор: Zahny 19.4.2005, 12:01 |
| Запихнула в отдельную строку sql3 = " AND M.Purpose LIKE ""*" & Form_Meetings.Purpose & "*""" и sql3 = sql3 & " ORDER BY M.Date Asc" Далее Form_FoundCWs.CWsListe.RowSource = sql & sql3 Вроде работает. Но уж очень длинных строк я не задавала. А кавычки для поиска я просто запретила использовать: и так нейдут, что надо |
| Автор: Zahny 19.4.2005, 12:19 |
| Всё. Я завязала с этим. Во всяком случае на сегодня. А то мне плохо станет. Как работает LSET мне не понравилось. Я так поняла, что сначала надо задать длинную пустую строку, а потом пробелы замещать. Так? Как искать служебный символ, понятия не имею. И даже не могу предположить, откуда он там берется... посреди нормального текста. С тем, что он есть, я не спорю. Просто остановлюсь на сегодня на работающем варианте. И как всегда, спасибо. Сегодня мне было приятно с Вами общаться |
| Автор: Akina 19.4.2005, 12:30 | ||||
не-а...
Но вообще Lset-Rset предназначен для заполнения полей файлов прямого доступа (field #1, 16 as A$ типа). |
| Автор: Zahny 19.4.2005, 13:27 | ||||
| tatsache... в смысле, действительно. с моим dim sql as string*50000 почему-то не сработало. я написала
а строка так и осталась пустой. Видимо, надо было написать
Ну да ладно. Не буду больше тратить Ваше время. Тем более, что я всё это я уже стерла. А разбираться в моих глупостях даже у меня сейчас нет охоты. Спасибо. Узнала кое-что новое. И это радует... Тема, я думаю, закрыта |