Форум: "Базы";
Текущий архив: 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 говорит у тебя поле в базе числовое.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c