|
#1
|
|||
|
|||
sql запрос
У меня имеется бд "Библиотека", столкнулся с проблемой с запросом, когда делаю возврат книг, по коду студентческого билета делаю один запрос на выявление того, сколько книг взял студент...выглядит это вот так...т.е. библиотекарь вводит код студентческого, если студент брал 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. |
#9
|
|||
|
|||
ORDER BY Name DESC, Fam DESC
Т.е. в запросе добавляешь к имени поля DESC, для которого сортировка по убыванию, иначе по умолчанию - по возрастанию. |