Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.25;
Скачать: CL | DM;

Вниз

Выборка из базы через указание в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
3-80385
kirill2000
2002-02-25 15:14
2002.03.25
New Table


3-80440
prorok
2002-02-27 13:51
2002.03.25
Индексирование


3-80422
civ
2002-02-26 20:04
2002.03.25
База данных IB


3-80436
wicked
2002-02-27 12:05
2002.03.25
join в 8


3-80420
AcE
2002-02-26 19:37
2002.03.25
запрос к Access