Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.04.2008, 21:22
Vasya_098 Vasya_098 вне форума
Прохожий
 
Регистрация: 11.04.2008
Сообщения: 1
Репутация: 10
По умолчанию 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  
Старый 11.04.2008, 22:32
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Я конечно до конца не понял, что тут происходит, но попробуйте сделать так.
Код:
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  
Старый 12.04.2008, 08:30
voron_paa voron_paa вне форума
Прохожий
 
Регистрация: 26.01.2008
Сообщения: 49
Репутация: 10
По умолчанию

Цитата:
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;

но вылазиит ошибка...помогите

Надо использовать параметры...

Код:
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  
Старый 16.04.2008, 19:14
dmit2222 dmit2222 вне форума
Новичок
 
Регистрация: 16.04.2008
Сообщения: 51
Репутация: 10
По умолчанию

Нужно выполнить запрос по дате.
У меня постоянно выдает ошибку "параметр 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  
Старый 16.04.2008, 20:01
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Конечно будет ошибка. У вас 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  
Старый 17.04.2008, 14:43
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от dmit2222
Нужно выполнить запрос по дате.
У меня постоянно выдает ошибку "параметр 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;

Учимся пользоваться параметрами.
Запрос:
Код:
SELECT * FROM проишествие WHERE Дата >= :d

Далее настраиваем тип данных паратетра у DataSet (Query : TQuery)
Код в Delphi:
Код:
Query.ParamByName('d').AsDateTime := DateTimePicker2.Date;
Query.Open;
Ответить с цитированием
  #7  
Старый 17.04.2008, 18:50
dmit2222 dmit2222 вне форума
Новичок
 
Регистрация: 16.04.2008
Сообщения: 51
Репутация: 10
По умолчанию

Спасибо за помощь!
Ответить с цитированием
  #8  
Старый 18.04.2008, 15:25
dmit2222 dmit2222 вне форума
Новичок
 
Регистрация: 16.04.2008
Сообщения: 51
Репутация: 10
По умолчанию

Подскажите как сделать сортировку по убыванию.

Код:
 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  
Старый 18.04.2008, 16:25
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ORDER BY Name DESC, Fam DESC

Т.е. в запросе добавляешь к имени поля DESC, для которого сортировка по убыванию, иначе по умолчанию - по возрастанию.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter