|
#1
|
|||
|
|||
SQL-запрос
Доброго времени суток. прошу о помощи:
собственно есть delphi и БД access, работаю с ADOQUERY. вот сам запрос: form1.ADOQuery1.SQL.text:='SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди WHERE Люди.id=точка_люди.id_чел AND Точка.id=точка_люди.id_точки AND точка_люди.id_точки=''' +(form2.DBComboBox2.Text)+'''' ; проблема в последней части запроса: дело в том, что id_точки - числовой тип, а combobox строка. Как мне сделать чтобы комбобокс в запросе воспринимался как число? если просто написать strtoint то будет выдаваться ошибка - в sql запросе должна быть строка а не integer. help |
#2
|
|||
|
|||
Код:
form1.ADOQuery1.SQL.text:='SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди WHERE Люди.id=точка_люди.id_чел AND Точка.id=точка_люди.id_точки AND точка_люди.id_точки=' + (form2.DBComboBox2.Text); P.S.: просто нужно убрать ковычки, ковычки нужны для текстовых полей, для числовых - не нужны. взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#3
|
|||
|
|||
Увы, так вылетает "ошибка синтаксиса (пропущен оператор)...."
изначально было просто "несоответствие типов" =( |
#4
|
|||
|
|||
покажите Ваш запрос, шото мне подсказывает, шо вы там чота не то написали.
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#5
|
|||
|
|||
Код:
form1.ADOQuery1.SQL.Clear; form1.ADOQuery1.active:=false; form1.ADOQuery1.SQL.text:='SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди WHERE Люди.id=точка_люди.id_чел AND Точка.id=точка_люди.id_точки AND точка_люди.id_точки=' + (form2.DBComboBox2.Text); form1.ADOQuery1.ExecSQL(); form1.ADOQuery1.active:=true; |
#6
|
|||
|
|||
ExecSQL не надо, он нужен для INSERT, UPDATE, DELETE запросов, нужно так:
Код:
form1.ADOQuery1.SQL.text := 'SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди WHERE Люди.id = точка_люди.id_чел AND Точка.id = точка_люди.id_точки AND точка_люди.id_точки = ' + form2.DBComboBox2.Text; form1.ADOQuery1.Open; взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#7
|
|||
|
|||
проблема не исчезла(( выдает ту же ошибку.. все же ему не нравится условие в запросе.. может все таки проблема с ковычками=(
|
#8
|
|||
|
|||
а так работает?
Код:
form1.ADOQuery1.SQL.text := 'SELECT имя, фамилия, телефон, [Тип адреса], adress FROM Люди, Точка, точка_люди WHERE Люди.id = точка_люди.id_чел AND Точка.id = точка_люди.id_точки'; form1.ADOQuery1.Open; взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#9
|
|||
|
|||
Да так работает.. но мне надо чтоб выводились данные по условию совпадения с combobox..
|
#10
|
|||
|
|||
используйте тот запрос, который с ошибкой и перед form1.ADOQuery1.Open; вставьте:
Код:
form1.ADOQuery1.SQL.SaveToFile('123.txt'); взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#11
|
|||
|
|||
Код:
SELECT имя, фамилия, телефон, [Тип адреса], adress, точка_люди.id_точки FROM Люди, Точка, точка_люди WHERE Люди.id = точка_люди.id_чел AND Точка.id = точка_люди.id_точки AND точка_люди.id_точки = |
#12
|
|||
|
|||
потому что у вас в form2.DBComboBox2.Text - пусто!
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#13
|
|||
|
|||
Да, спасибо, Вы правы. все дело в том что когда выполняется запрос, очищаются все edit, combobox, и тд..
|
#14
|
|||
|
|||
сделайте отдельный ADOQuery для запроса и его используйте для отображения данных.
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#15
|
|||
|
|||
Спасибо Вам большое за помощь!, сей час как раз этим и занимаюсь
|