не выполняется запрос

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
NewUser
новенький
Сообщения: 97
Зарегистрирован: 08.05.2007 13:28:40

не выполняется запрос

Сообщение NewUser »

выполняется код по нажатии на кнопку

Код: Выделить всё

SQLQuery1.DataBase := DM.IBConnection;
   SQLQuery1.Transaction := DM.SQLTransaction;
   
   SQLQuery1.SQL.Text := 'SELECT * FROM USERS, SOTRUDNIKI WHERE USER_PAS=' + EditUserPas.Text + ' AND USER_SOTR=SOTR_ID';
   
   SQLQuery1.Active := true;
   SQLQuery1.Open;

   ... далее продолжение


при запуске программы все проходит нормально, при нажатии на кнопку выполняется код и постоянно ошибка в SQLQuery1.Active := true;

вот ее текст:
IBConnection: Fetch:
-conversion error from string ''petrov ''.

запрос уже писал и так
SQLQuery1.SQL.Text := 'SELECT * FROM USERS, SOTRUDNIKI WHERE USER_PAS=1 AND USER_SOTR=SOTR_ID';

и так
SQLQuery1.SQL.Text := 'SELECT * FROM USERS, SOTRUDNIKI WHERE USER_PAS=' + #41 + #39 + EditUserPas.Text + #39 + #41 + ' AND USER_SOTR=SOTR_ID';
NewUser
новенький
Сообщения: 97
Зарегистрирован: 08.05.2007 13:28:40

Сообщение NewUser »

если делаю так, то все нормально, но свопадений в
SQLQuery1.RecordCount всегда 0, хотя указываю верное значение для :PAS


Код: Выделить всё

SQLQuery1.Params.ParamByName('PAS').Value := EditUserPas.Text;
   SQLQuery1.SQL.Text := 'SELECT * FROM USERS, SOTRUDNIKI WHERE USER_PAS=:PAS AND USER_SOTR=SOTR_ID';
NewUser
новенький
Сообщения: 97
Зарегистрирован: 08.05.2007 13:28:40

Сообщение NewUser »

в последнем варианте все ясно, сначала параметр присвоил ...
а вот почему первые не работают
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

SQLQuery1.Active := true;
SQLQuery1.Open;


так не делай просто

Код: Выделить всё

SQLQuery1.Open;


непараметизированые запросы это вообще грех, но если хочится тогда как нибуть так:

Код: Выделить всё

   SQLQuery1.SQL.Text := 'SELECT * FROM USERS, SOTRUDNIKI WHERE USER_PAS=''' + EditUserPas.Text + ''' AND USER_SOTR=SOTR_ID'; 
Аватара пользователя
Astralis
новенький
Сообщения: 45
Зарегистрирован: 06.06.2007 20:33:05
Откуда: Tvercity-Annet
Контактная информация:

Сообщение Astralis »

NewUser писал(а):

Код: Выделить всё

SQLQuery1.Params.ParamByName('PAS').Value := EditUserPas.Text;
   SQLQuery1.SQL.Text := 'SELECT * FROM USERS, SOTRUDNIKI WHERE USER_PAS=:PAS AND USER_SOTR=SOTR_ID';

По разным причинам лучше писать наоборот:

Код: Выделить всё

SQLQuery1.SQL.Text := 'SELECT * FROM USERS, SOTRUDNIKI WHERE USER_PAS=:PAS AND USER_SOTR=SOTR_ID';
SQLQuery1.Params.ParamByName('PAS').Value := EditUserPas.Text;
Ответить