| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > TQuery (запрос с переменой) |
| Автор: Папараццы 11.2.2007, 14:01 | ||
| Вот решил перейти к обучению С++ Билдера...Сразу чем я заинтересовался это базы данных...Через ODBC очень легко получил доступ к MySQL (Намного легче чем MySQL++) крч всё супер было пока я не остановился на запросах...Беру DataSource,Query,DbGrid и один Edit чтобы прозводить поиск... Связал всё ...Потом стал писать SQL запрос ...Точно так же как и в PHP
Где value присваиваю значение EDIT ' а.. Ну как вы поняли нечего не происходит...При компиляции запрашивает пароль на БД ..и пустая ГРИД даже в коде value = 1 пишу тоже нечего... Как это надо производить ?? Зарание благодарен... ПыСы : Стоитли учится с DEVELOPER 2006? там включён С++ кажется ... |
| Автор: Rodman 11.2.2007, 14:41 | ||
|
| Автор: Папараццы 11.2.2007, 16:36 |
| А эт потомучто VCL на Паскале написаны ?? Поэтому присваивание на Паскале ? Вроде понятно... |
| Автор: Anikmar 11.2.2007, 16:42 |
Это вы про что? Какое присванивание на Паскале? Кстати о прведенном примере. Чтобы избежать недоразумений - лучше явно преобразовать параметр в целое (там ведь поле целочисленное?): Query->ParamByName("Prm")->Value=Edit1->Text.ToInt(); |
| Автор: Папараццы 11.2.2007, 19:22 | ||
Спасибо за совет...Ну преобразование в запросе идентичны также как и на Дельфи...А вот у меня есчё трабла есть такая по поводу вставки записи уже в таблицу парадокса
Заявляет что не нет такой переменной prm1 ? Да и для каждого запроса обизательно ставить по одному Query? Можно ли взять один использовать для всех...И откуда можно взять фаг по SQL для Paradox или он такой же как и в MySQL - e ???? Зарание благодарен... |
| Автор: Anikmar 11.2.2007, 20:04 | ||
| Сталкивался с такой проблемой. Решил ее следующм образом: После динамического создания текста запроса я делал следующую команду:
|
| Автор: Папараццы 11.2.2007, 23:09 |
| А что это значит ? |
| Автор: Anikmar 11.2.2007, 23:20 |
| Это заставляет компонент разобрать текст запроса и заполнить массив Parameters необходимыми значениями. Можно их заполнить самостоятельно. Этому гляку я удивился - в дезайн тайме парсится автоматом, но там видимо другая обработка. Когда запрос меняется в рунтайме компоненту видимо не хватает мозгов (разработчика), чтобы это засечь. Так как большинство запросов я создавал в дизайн-тайме я не особо внимательно разбирался с таким глюком - просто нашел способ решения и на этом успокоился. Кстати, встроенный хелп билдера соержит неправильный пример - если его тупо содрать, он выдает такую же ошибку. |
| Автор: Romikgy 11.2.2007, 23:25 |
имхо есть разница |
| Автор: Anikmar 11.2.2007, 23:42 | ||
Не заметил, не внимательный. Но компонент реально глючит. Даже если двоеточия поставить. По крайней мере у меня с этим были заморочки. Добавлено @ 23:44 Я просто проверил на таком коде (эта проблема давно возникала, поэтому просто кусочек накропал заново)
|
| Автор: Rodman 12.2.2007, 09:54 | ||
Папараццы,
1. переда параметром должно стоять двоеточие.. 2. скобки забыл... 3. для insert, delete, update лучше использовать ExecSQL |
| Автор: Папараццы 12.2.2007, 13:28 |
| Ну вот я тоже это заметил...Понятно..Спасибо... |
| Автор: Rodman 12.2.2007, 13:29 |
| ну если все понятно, пометь топик - решенным!!! |
| Автор: Папараццы 12.2.2007, 13:46 |
| Не решился то вопрос уже довно только по теме уже пошли вопросы....Пусть поживёт темка ,у меня будут вопросики..А без них не бывает.. |
| Автор: fliengster 2.5.2009, 08:16 |
| Есть такая беда, как тогда сделать запрос с фильтрьванием типа если ты будешь вводить в Edit1->Text = "Art's"; то происходит проблема с запросом, если в запросе было введено такое.. AnsiString Name = Edit1->Text; ADOQuery3->SQL->Add("select Table1.id,Table1.Name from Table1,Table2 where Name_Recipe = '"+Name+"'; "); ADOQuery3->Active = true; происходит что когда просматривается запрос получается в переменной Name встречается символ ' .... Как мне его отфильтровать ... или каждый раз делать парсин строки ... для обнаружения этого символа и заменять на что-то другое? |
| Автор: Sharkfire 2.5.2009, 14:54 |
| такие символы экранируются с помощью слеша " \ " и SQL не анализирует его как часть синтаксиса. |
| Автор: fliengster 3.5.2009, 20:50 |
| В принцепе я это знаю... но тогда нужно проводить парсинг строки .. типа если попадается символ ' тогда перед ним ставить "\"...? |