Поиск по бд акссес
Вот часть кода формы поиска:
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB,shellapi;
type
TForm7 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
ComboBox1: TComboBox;
Button1: TButton;
ADOQuery10: TADOQuery;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
uses main;
{$R *.dfm}
procedure TForm7.Button1Click(Sender: TObject);
var
F: TextFile;
sql:String;
b:Integer;
begin
ADOQuery10.SQL.Clear;
b:=0;
if(Edit1.Text<>'')then
begin
sql:='Data_rogdenie=DateValue("'+Edit1.Text+'")';
b:=1;
end;
if(ComboBox1.Text<>'')then
begin
if(b=1)then
sql:=sql+' AND ';
sql:='Pol="'+ComboBox1.Text+'"';
b:=1;
end;
ADOQuery10.SQL.Add('SELECT Tab_nomer FROM Sotrydnik WHERE '+sql);
try
ADOQuery10.Active:=True;
except
ShowMessage('Произошла исключительная ситуация: Не могу поместить данные! Обратитесь к разработчику программы.');
end;
with Form1 do
begin
AssignFile(F, 'report.htm');
Rewrite(F);
Writeln(F,'<html><head><title>Отчет по сотруднику сотруднику</title><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"></head><body>');
PS: в TADOQuery есть замечательная вещь - параметры... и не надо каждый раз составлять запрос заново.
PSPS: К стати а как этот код работает, если у акцесса свой формат даты (в решетках) ?
Если вставляю вместо
sql:='Data_rogdenie=DateValue("'+Edit1.Text+'")';
вот это
sql:=Famili=DateValue("'+Edit1.Text+'")';
ни чего не происходит
Код:
sql := 'Famili = ' + QuotedStr(Edit1.Text);
Да спасибо, все работает)))
Жора, при всем уважении... но ты выдал говнокод. Я, конечно, понимаю - это всего лишь исправления кода ТС, но ведь это фигня. В таких случаях расово верное решение - параметры TQuery. Тогда и не нужно будет плясок с бубнами вокруг преобразования различных типов в формат, используемый в запросах конкретной БД.
а в своих проектах я юзаю параметры. да и не самый говнокодный у меня говнокод :)
А вообще то называть мой код говнокодом, это то же самое, что сказать - механическая коробка передач - говно, АКПП форева. ;) Параметры ведь тоже глючить умеют.
Да ладно, не обижайся.. :) Дело то не в глюках, а в правильности решения. Кстати, что-то не припоминаю, чтобы у меня параметры глючили.
George вполне нормально ответил на заданный вопрос.
Понятно что нужно использовать параметры и т.п. но в ввиду того, как задан вопрос топикстартером - параметры ему могут быть просто не под силу.
[COLOR="Red"]Автору замечание - еще раз подобным образом оформите код - получите нарушение[/COLOR]