|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Помогите начинающему!!!
Помогите преодолеть.
Для связи с БД использую ADO. Таблицу отобразил, а вот запрос не могу сделать, пишет "несоответствие типов". В ADOQuery1 в параметре SQL прописаны 2 строчки: 0) SELECT * FROM Ustroystwa WHERE 1) [ID]='''+KopyIDUstr+''' При выборе из Grida некоего пункта копирую ID в KopyIDUstr и пытаюсь заменить вторую строчку с уже готовыми данными, однако не хочет делать запрос. Да, KopyIDUstr: Integer, а в запросе, как я понял, используется строковый тип (String). Может в этом проблема? Если да, то как подкорректировать, что добавить? Код:
procedure TForm1.ComboBox1Select(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.SQL[1]:='[ID]='''+KopyIDUstr+''''; ADOQuery1.Open; DataSource1.DataSet:=ADOQuery1; end; Последний раз редактировалось Admin, 31.03.2010 в 16:13. |
#2
|
|||
|
|||
Использовать параметры.
В запросе пишешь так: Код:
SELECT * FROM Ustroystwa WHERE ID = :ID Код:
procedure TForm1.ComboBox1Select(Sender: TObject); begin ADOQuery1.Close; ADOQuery1.ParamByName['ID'].AsInteger := KopyIDUstr; ADOQuery1.Open; DataSource1.DataSet:=ADOQuery1; end; PS. Не помню точно где там в ADO параметры сидят. Возможно надо обращаться к ним через ADOQuery1.Params.ParamByName['ID'].AsInteger. |
#3
|
|||
|
|||
Цитата:
Код:
ADOQuery1.Parameters.ParamByName['ID'].AsInteger:=KopyIDUstr; Код:
[Ошибка] Unit2.pas(62): Not enough actual parameters |
#4
|
||||
|
||||
Код:
ADOQuery1.Parameters.ParamByName('ID').Value:=KopyIDUstr; |
#5
|
|||
|
|||
Цитата:
Спасибо, больше не ругается)))) А кто-нибудь может пояснить что означают точки перед ID в запросе SQL?: Код:
ID=:ID У меня две формы. В Unit1 я прописал переменную Kip: integer. При выполнении значение этой же переменной мне нужно и в Unit2, однако она становится равной 0. При пошаговом просмотре видно, что она обнуляется в момент выполнения команд написанных в событиях OnShow второй формы. Что и где нужно прописать, чтобы значение переменной сохранялось и во второй форме? |
#6
|
||||
|
||||
точки перед ID- это параметр, который можно передать в запрос во время выполнения кода. Например если бы было:
Код:
SELECT * FROM Ustroystwa WHERE USER_NAME = :NAME Код:
ADOQuery1.Parameters.ParamByName('NAME').Value:='''Иван'''; Про переменную- ну так уберите из событий OnShow второй формы тот момент в котором переменная обнуляется. ЗЫ Надеюсь, эта переменная все- таки глобальная... |