![]() |
|
|
|
|
#1
|
|||
|
|||
|
У меня имеется бд "Библиотека", столкнулся с проблемой с запросом, когда делаю возврат книг, по коду студентческого билета делаю один запрос на выявление того, сколько книг взял студент...выглядит это вот так...т.е. библиотекарь вводит код студентческого, если студент брал 2 книги то они заливаются в combobox...
Код:
combobox11.Clear;
table4.First;
while not table4.Eof do
begin
if (table4kod_stud.Text=dbtext15.Field.Text) then
combobox11.Items.Add(table4.fieldbyName('nazv').AsString);
table4.Next;
end;
combobox11.Text:='Выберите книгу для сдачи';после нужно выбрав с комбобокса название книги которой студент хочет возвратить в библиотека..нужно сделать второй запрос, удалить выбранную книгу, т.е. возврат..но не получается, а делаю это так: Код:
Query1.Close;
Form1.Query1.Close;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add('SELECT * FROM vydacha.db WHERE (kod_stud LIKE "'+dbedit15.Text+') and (nazv LIKE "' + combobox1.Text+') ');
Form1.Query1.Open;Admin: Учимся правильно оформлять код! но вылазиит ошибка...помогите Последний раз редактировалось Admin, 12.04.2008 в 10:18. |
|
#2
|
|||
|
|||
|
Я конечно до конца не понял, что тут происходит, но попробуйте сделать так.
Код:
Query1.Close;
Form1.Query1.Close;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add('SELECT * FROM vydacha.db WHERE (kod_stud LIKE '+ quotedstr(dbedit15.Text)+') and (nazv LIKE '+ quotedstr(combobox1.Text)+')');
Form1.Query1.Open;А какую ошибку то пишет? |
|
#3
|
|||
|
|||
|
Цитата:
Надо использовать параметры... Код:
Query1.Close;
Form1.Query1.Close;
Form1.Query1.SQL.Clear;
Form1.Query1.SQL.Add('SELECT * FROM vydacha.db WHERE (kod_stud LIKE :b1 ) and (nazv LIKE :b2) ');
Form1.Query1.Params.ParamByName('b1').AsString := dbedit15.Text;
Form1.Query1.Params.ParamByName('b2').AsString := combobox1.Text;
Form1.Query1.Open;Admin: Учимся правильно оформлять код! У меня работало... ![]() Последний раз редактировалось Admin, 12.04.2008 в 10:20. |
|
#4
|
|||
|
|||
|
Нужно выполнить запрос по дате.
У меня постоянно выдает ошибку "параметр d1 не имеет значение по умолчанию".Помогите выполнить запрос! d1:=DateToStr(DateTimePicker2.Date); StrToDate(d1); with Form2.ADOQuery1 do begin close; SQL.Clear; SQL.Add('select *'); SQL.Add('FROM Происшествие'); SQL.Add('where'); SQL.Add('Дата>=d1'); Form2.ADOQuery1.Open; end; Последний раз редактировалось dmit2222, 16.04.2008 в 19:22. |
|
#5
|
|||
|
|||
|
Конечно будет ошибка. У вас d1 находится в кавычках, т.е. является для SQL запроса каким то текстом.
Можно так сделать, хотя может оно и не совсем правильно. Код:
d1:=DateToStr(DateTimePicker2.Date);
with Form2.ADOQuery1 do begin
close;
SQL.Clear;
SQL.Add('select *');
SQL.Add('FROM Происшествие');
SQL.Add('where');
SQL.Add('Дата>='+ConvertDate(d1));
Open;
end;вводим дополнительную функцию. Код:
Function ConvertDate(s:string):string; begin ConvertDate:='#'+copy(s,1,2)+'-'+copy(s,4,2)+'-'+copy(s,7,4)+'#'; end; |
|
#6
|
|||
|
|||
|
Цитата:
Учимся пользоваться параметрами. Запрос: Код:
SELECT * FROM проишествие WHERE Дата >= :d Далее настраиваем тип данных паратетра у DataSet (Query : TQuery) Код в Delphi: Код:
Query.ParamByName('d').AsDateTime := DateTimePicker2.Date;
Query.Open; |
|
#7
|
|||
|
|||
|
Спасибо за помощь!
|
|
#8
|
|||
|
|||
|
Подскажите как сделать сортировку по убыванию.
Код:
with form1.Query1 do begin
Close;
SQL.Clear;
SQL.Add('SELECT Fam, Name, Class');
SQL.Add('FROM ":Школа:school.db"');
SQL.Add('WHERE');
SQL.Add('(Fam = "'+ fam + '")');
SQL.Add('ORDER BY Name, Fam');Это сортировка по возрастанию
Open;Admin: Учимся правильно оформлять код! Последний раз редактировалось Admin, 18.04.2008 в 19:17. |