|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Поиск по бд акссес
Есть БД аксес, сейчас поиск и формирование отчета происходит по дате рождения, помогите сделать по ФИО.
Вот часть кода формы поиска: Код:
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>'); Последний раз редактировалось Admin, 04.02.2010 в 11:46. |
#2
|
||||
|
||||
У Вас ФИО это одно поле или 3(имя,фамилия,отчество)?
|
#3
|
|||
|
|||
Вообще 3 мя, но если можно подскажите как сделать отдельно Фамилию это поле Familia
И все вместе 3 мя поля ми |
#4
|
||||
|
||||
Надо просто сделать другой запрос,как-то так:
Код:
Это поиск по фамилии sql:='Upper(Familia)=Upper('+familia+')'; // upper-нужен что бы сделать регистронезависимый поиск .................... ADOQuery10.SQL.Add('SELECT Tab_nomer FROM Sotrydnik WHERE '+sql); Общий поиск: sql:='Upper(Familia)=Upper('+familia+') AND Upper(NAME)=Upper('+name+'') AND Upper(Otchestvo)=upper('+otchestvo+')'; ADOQuery10.SQL.Add('SELECT Tab_nomer FROM Sotrydnik WHERE '+sql); где familia,name,otchestvo - переменные типа string в которых хранятся необходимые фамилия,имя,отчество |
#5
|
|||
|
|||
Если делаю как написано выскакивает след
[Error] Unit7.pas(42): Undeclared identifier: 'family' [Fatal Error] Diplom.dpr(11): Could not compile used unit 'Unit7.pas' Если делаю так sql:='Upper(Family)'; ТО опять ни чего не происходит открываеться файл htm отчета пустой. |
#6
|
||||
|
||||
family - это переменная, которой надо присвоить значение!
Код:
procedure TForm7.Button1Click(Sender: TObject); var family:string; .............. family:='petrov'; ................. |
#7
|
|||
|
|||
Если делаю так:
Код:
procedure TForm7.Button1Click(Sender: TObject); var F: TextFile; sql:String; Family:String; b:Integer; ................... sql:='Upper(Family)=Upper('+family+')'; Пишет; Неопределенная функция Upper в выражении и выделяет ADOQuery10.Active:=True; Если делаю так Если делаю так: procedure TForm7.Button1Click(Sender: TObject); var F: TextFile; sql:String; Family:String; b:Integer; ................... sql:='Family'; Работает только отчет создает по всем пользователем а не по нужному Последний раз редактировалось dvtimofei, 04.02.2010 в 13:36. |
#8
|
||||
|
||||
тогда попробуй без upper
Код:
........... family:='petrov'; sql:='Family='+family; ADOQuery10.SQL.Add('SELECT Tab_nomer FROM Sotrydnik WHERE '+sql); ............. |
#9
|
|||
|
|||
Все равное открывает весь список
а вопрос зачем это: family:='petrov'; ? Когда под family предпологаеться выбор из всего списка одну фамилию. Может такой косяк получаеться из за того что в этой форме есть вывод отчета по полу ? |
#10
|
||||
|
||||
Цитата:
Пол думаю не причем Скинь свой исходник я посмотрю в чем проблема |
#11
|
|||
|
|||
Код:
ADOQuery10.Close; ADOQuery10.SQL.Clear; ADOQuery10.SQL.Add('SELECT Tab_nomer FROM Sotrydnik WHERE Family = :Family'); ADOQuery10.Parameters.ParamByName('Family').Value := 'petrov'; ADOQuery10.Open; |