Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];




Вниз

Выборка из базы через указание в edit е 


Demon ltd   (2002-02-24 22:17) [0]

Люди, у меня есть вопрос, на который ответа пока никто не знает.
Я писал:
"Чтобы мне вывести на отчёт через SQL некоторые данные,
я пишу:
form1.Query1.close;
form1.Query1.SQL.Clear;
form1.Query1.SQL.Add("select *");
form1.Query1.SQL.add("from "putevki.db"");
form1.Query1.SQL.add("where (tabnomer="1234")");
form1.Query1.open;
form1.DataSource1.DataSet:=Query1;
form1.Query1.Active:=true;
form1.QRDBText1.DataSet:=Query1;
form1.QRDBText1.DataField:="vidputevki";
form1.QuickRep1.Preview;
У меня показываются данные в dbgreed"е и репорте.
В строчке form1.Query1.SQL.add("where (tabnomer="1234")") я уже
указываю, данные с каким табельным номером выводить.
А что надо написать в этой строчке, чтобы если у меня на форме есть
уже EDIT, чтобы когда я в нём ввожу любой табельный номер,
чтобы нужная информация выводилась. Я написал
в строчке form1.Query1.SQL.add("where (tabnomer="edit1.text")"), но
после компиляции в dbgreed"е ничего не показывается, только пустая строка.
Мне ответили:
Вместо form1.Query1.SQL.add("where (tabnomer="edit1.text")")
пиши form1.Query1.SQL.add("where (tabnomer=edit1.text)")"
Я так прописал, но всё равно выдаётся ошибка. У кого-нибудь есть новые идеи.
Заранее благодарен.



panov   (2002-02-24 22:59) [1]

Ты не указал, какого типа у тебя поле tabnomer.
Подозреваю, что текстового, но если это не так, то привожу пример и для текстового, и для числового типа.

1. Текстовый.

form1.Query1.SQL.Add("select *");
form1.Query1.SQL.add("from "putevki.db"");
form1.Query1.SQL.add(" where tabnomer=""" + edit1.text + """ ");

1. Числовой.

form1.Query1.SQL.Add("select *");
form1.Query1.SQL.add("from "putevki.db"");
form1.Query1.SQL.add(" where tabnomer=" + edit1.text+" ");



Aleks1   (2002-02-25 01:46) [2]

> Demon ltd (24.02.02 22:17)
А не плохо было бы привести сообщение об ошибке.

>panov © (24.02.02 22:59)
>form1.Query1.SQL.add(" where tabnomer=""" + edit1.text + """ ");

А в какой версии нужно строковую переменную заключать в кавычки?



Woron   (2002-02-25 02:02) [3]

2Aleks1
А в какой версии нужно строковую переменную заключать в кавычки?

вроде во всех



Aleks1   (2002-02-25 02:19) [4]

А как же у меня работает
SQL.Add("WHERE ID_SType = "+STTab.FieldByName"ID_SType").AsString);
?



Woron   (2002-02-25 02:34) [5]

Если ID_SType string, то не знаю



Aleks1   (2002-02-25 02:54) [6]

Sorry за пропущенную открывающую скобку, но в остальном все верно! Кстати, я мог бы вместо STTab.FieldByName("ID_SType").AsString подставить любую переменную (var St: string), и ничего бы не изменилось! Кавычки нужны лишь при явной записи строки. То бищь Они нужны компиллятору, чтобы правильно интерпретировать текст исходника.



sniknik   (2002-02-25 03:02) [7]

Aleks1 а ты эту строку из программы вынимал? или счас написал по памяти. Если из программы то то она вообше должна ошибку давать. (скобок не хватает)
Если это опечатка то в какой базе это работает? возможно неявное преобразование типа, и что будет если строка состоит из цифр как число?



Aleks1   (2002-02-25 03:13) [8]

Конечно по памяти.
Насчет скобок, может и промахнулся, но
SQL.Add("WHERE ID_SType = "+St);
работает всегда, если ID_SType - поле типа "Alfa", а St - String.



sniknik   (2002-02-25 03:29) [9]

В Ms SQL не работает ошибка

Server: Msg 207, Level 16, State 3, Line 1
Invalid column name "NOSIZE".

на запрос из профайлера:
select * from cashgood where cardsize = NOSIZE
где cardsize типа char(20)

в Delphi составлялся так
St:= "NOSIZE";
ADOQuery.CommandText:= "select * from cashgood where cardsize = "+St
Какую базу используеш?



Aleks1   (2002-02-25 03:37) [10]

>sniknik © (25.02.02 03:29)
>В Ms SQL не работает ошибка7
>ADOQuery

В вопросе явно указано
"Выборка из базы через указание в edit"е [D4, D5, D6, Paradox]"



panov   (2002-02-25 11:30) [11]

Для указания строки в любой БД необходимы кавычки.

>Aleks1 (25.02.02 02:19)

А работает потому, что в Edit1.Text содержится числовое значение в строковом представлении.

Попробуй указать в Editq.Text, например "dfsadf" и выполни запрос.



sniknik   (2002-02-25 12:37) [12]

В Paradox-е через Bde я тоже пробовал, нашол строковое поле ипытался выполнить в кавычках "" и "" работает а без ошибка.
Поэтому и возник вопрос с базой возможно какаянибудь делает преобразование "по смыслу".
но теперь понятно -> panov говорит у тебя поле в базе числовое.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.016 c
3-80411           toorick               2002-02-26 14:08  2002.03.25  
SQL и MEMO-поля


1-80480           Lenidus               2002-03-08 00:53  2002.03.25  
Как узнать что мышь вошла/вышла с компонента, если у этого компонента нет события OnMouseMove?


7-80700           Vbazik                2001-12-23 17:37  2002.03.25  
Графика под Dualhead card


1-80462           Leonon                2002-03-12 09:32  2002.03.25  
Диалог + TComboEdit и автоматический ModalResult


4-80723           Evgeny                2002-01-22 07:45  2002.03.25  
PopupMenu