Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2010, 22:16   #1
Antoha
Пользователь Подтвердите свой е-майл
 
Аватар для Antoha
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию Экранирование кавычек в С

Здравствуйте уважаемые.
У меня проблема следующего характера: на событие onShow формы помещен следующий код
Код:
ADOConnection1->Connected=true;

Q_Poisk->Active=false;
Q_Poisk->SQL->Text=strcat("Select t1.name_med,t1.desc_med,t2.name_drug,t2.address_drug,t3.price,t3.count From Medicines t1,Drugstore t2,Drug_Med t3 ",
"Where (t1.id_med=t3.id_med)and(t2.id_drug=t3.id_drug)and(t3.count>0)and(t1.name_med like \'Т*\') Order by t1.name_med, t3.price");
Q_Poisk->Active=true;
Закидывал этот запрос в MS Access все работает нормально.

Если удалить условие and(t1.name_med like \'Т*\') то все отображается в C++ нормально. А с этим условием поля отображаются но записей в них нет.
Помогите плиз я вообще не понимаю в чем проблема.
Величайшая слава не в том, чтобы никогда не ошибаться, но в том, чтобы уметь подняться каждый раз, когда падаешь.
Конфуций
Antoha вне форума Ответить с цитированием
Старый 14.05.2010, 23:03   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

кавычки у вас экранированы для С? или для запроса самого?(сейчас он внутри программы выглядит так "Where (t1.id_med=t3.id_med)and(t2.id_drug =t3.id_drug)and(t3.count>0)and(t1.n ame_med like 'Т*') Order by t1.name_med, t3.price")
и еще меня немного смущает strcat, но у вас вроде AV не вылазит.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.05.2010, 00:19   #3
Antoha
Пользователь Подтвердите свой е-майл
 
Аватар для Antoha
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Кажется я понял в чем дело!!!

Мой запрос внутри программы выглядит так
Код:
Select t1.name_med,t1.desc_med,t2.name_drug,t2.address_drug,t3.price,t3.count From Medicines t1,Drugstore t2,Drug_Med t3
Where (t1.id_med=t3.id_med)and(t2.id_drug=t3.id_drug)and(t3.count>0)and(t1.name_med like 'Т*')
Order by t1.name_med, t3.price
Когда я копирую свой запрос в Access он выглядит так:
Код:
Select t1.name_med,t1.desc_med,t2.name_drug,t2.address_drug,t3.price,t3.count From Medicines t1,Drugstore t2,Drug_Med t3
Where (t1.id_med=t3.id_med)and(t2.id_drug=t3.id_drug)and(t3.count>0)and(t1.name_med like 'Ò*')
Order by t1.name_med, t3.price
Вот почему поля отображаются, а записей в них нет.
Я почему-то раньше не обратил на это внимания и просто менял Ò на Т.

Access не понимает русский, как заставить его все таки выполнить мой запрос?
Величайшая слава не в том, чтобы никогда не ошибаться, но в том, чтобы уметь подняться каждый раз, когда падаешь.
Конфуций
Antoha вне форума Ответить с цитированием
Старый 15.05.2010, 01:12   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

между программами это разность кодировок, в аксесе если ввести именно ваш запрос, то норм же?
у вас в функции юникод строка или анси?(char* или WCHAR*, или же tchar*)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.05.2010, 02:33   #5
Antoha
Пользователь Подтвердите свой е-майл
 
Аватар для Antoha
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Если мой запрос набрать в аксесе то все норм. Если я свой запрос наберу в C++ и скопирую в аксел, то вместо буквы Т вставляется символ Ò.

Тип метода Q_Poisk->SQL->Text - AnsiString
Величайшая слава не в том, чтобы никогда не ошибаться, но в том, чтобы уметь подняться каждый раз, когда падаешь.
Конфуций

Последний раз редактировалось Antoha; 15.05.2010 в 20:59.
Antoha вне форума Ответить с цитированием
Старый 15.05.2010, 20:59   #6
Antoha
Пользователь Подтвердите свой е-майл
 
Аватар для Antoha
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Народ подскажите плиз что это за трабл такой с кодировками.
Величайшая слава не в том, чтобы никогда не ошибаться, но в том, чтобы уметь подняться каждый раз, когда падаешь.
Конфуций
Antoha вне форума Ответить с цитированием
Старый 16.05.2010, 02:47   #7
Antoha
Пользователь Подтвердите свой е-майл
 
Аватар для Antoha
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Я попробовал проделать подобный запрос с MySQL-ем, тоже были подобные проблемы, но когда я вписал код
MyConnection1.Options.Charset:='cp1 251'
то все заработало.

В Accesse подобного свойства я не нашел. Подскажите плиз как сменить кодировку объекта ADOConnection на cp1251.
Величайшая слава не в том, чтобы никогда не ошибаться, но в том, чтобы уметь подняться каждый раз, когда падаешь.
Конфуций
Antoha вне форума Ответить с цитированием
Старый 16.05.2010, 21:02   #8
Antoha
Пользователь Подтвердите свой е-майл
 
Аватар для Antoha
 
Регистрация: 21.08.2007
Сообщений: 46
По умолчанию

Решил использовать MySQL, а не Accesse.
Величайшая слава не в том, чтобы никогда не ошибаться, но в том, чтобы уметь подняться каждый раз, когда падаешь.
Конфуций
Antoha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экранирование символов Roms PHP 2 15.05.2010 13:09
Замена кавычек nyton Microsoft Office Excel 8 01.04.2010 18:36
Символ двойных кавычек Pr1meEX PHP 3 20.06.2009 21:39
Экранирование кавычек в Delphi kiber_punk Общие вопросы Delphi 7 29.12.2008 19:28
экранирование кавычек в C (аналог magic_quotes)? fis Общие вопросы C/C++ 1 26.06.2008 19:11