Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-80384
hooky-mars
2002-02-25 14:03
2002.03.25
Excel


1-80483
KIR
2002-03-12 15:05
2002.03.25
Изменение шрифта отдельной ячейки TStringGrid a


1-80478
Донской
2002-03-12 10:53
2002.03.25
WORD_Delphi


4-80727
yus
2002-01-24 21:06
2002.03.25
Считывания секторов на диске(А:)


3-80383
Demon ltd
2002-02-24 22:17
2002.03.25
Выборка из базы через указание в edit е





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский