Всем доброго времени суток Пишу курсовую, завтра сдавать, а преподаватель в последний момент потребовал все переделать Смысл такой: есть БД в Access, в ней 7 связанных таблиц, и программа на Delphi 7, через ADO все подключается, на форме выводятся через ADOQuery частично записи из всех таблиц Нужно реализовать сортировку записей по выбранным полям, а также возможность добавления новой записи, при чем добавляться, я так понимаю, запись должна сразу во все связанные таблицы Ниже представлен код Очень надеюсь на вашу помощь Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, ADODB, StdCtrls, RpRenderPDF, RpRenderHTML, RpRenderRTF, RpRender, RpRenderText, RpBase, RpFiler, RpCon, RpConDS, RpDefine, RpRave;
type TForm1 = class(TForm) ADOConnection1: TADOConnection; DataSource1: TDataSource; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Label1: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; CheckBox1: TCheckBox; CheckBox2: TCheckBox; CheckBox3: TCheckBox; CheckBox4: TCheckBox; CheckBox5: TCheckBox; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Memo1: TMemo; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; DBNavigator1: TDBNavigator; RvProject1: TRvProject; RvDataSetConnection1: TRvDataSetConnection; RvRenderPDF1: TRvRenderPDF; RvRenderHTML1: TRvRenderHTML; RvRenderRTF1: TRvRenderRTF; RvRenderText1: TRvRenderText; Label2: TLabel; DBGrid1: TDBGrid; ADOQuery1: TADOQuery; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public tb:TGraphicField; { Public declarations } end;
var Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var field:string; fieldlocate:string; begin if ADOQuery1.Locate('Название',variant(edit1.Text),[]) then Dbgrid1.SetFocus; if ADOQuery1.Locate('Имя',variant(edit2.Text),[]) then Dbgrid1.SetFocus; if ADOQuery1.Locate('Фамилия',variant(edit3.Text),[]) then Dbgrid1.SetFocus; if ADOQuery1.Locate('Жанр',variant(edit4.Text),[]) then Dbgrid1.SetFocus; if ADOQuery1.Locate('Издательство',variant(edit5.Text),[]) then Dbgrid1.SetFocus; if checkbox1.Checked then begin field:='Название'; fieldlocate:='edit1.text' end else if checkbox2.Checked then begin field:='Имя'; fieldlocate:='edit2.text'; end else if checkbox3.Checked then begin field:='Фамилия'; fieldlocate:='edit3.text'; end else if checkbox3.Checked then begin field:='Жанр'; fieldlocate:='edit4.text'; end else if checkbox3.Checked then field:='Издательство'; fieldlocate:='edit5.text'; if ADOQuery1.Locate(field,variant(fieldlocate),[]) then Dbgrid1.SetFocus; end;
procedure TForm1.Button2Click(Sender: TObject); var LookupResult:variant; i:integer; begin memo1.Lines.Add(''); LookupResult:=ADOQuery1.Lookup( 'Название',variant(edit6.Text),'Имя;Фамилия;Жанр;Издание;'); if VarType(LookupResult)=varNull then showMessage('Запись не найдена! ' +edit6.Text) else if varIsArray(LookupResult) then begin for I := 0 to 3 do memo1.Lines.Add(lookupresult[I]); end; end;
procedure TForm1.Button3Click(Sender: TObject); begin Form2.show end;
procedure TForm1.Button4Click(Sender: TObject); begin RvProject1.SetProjectFile(ExtractFilePath(Application.ExeName)+'Project1.rav'); RvProject1.ExecuteReport('Report1'); RvProject1.Close; end;
procedure TForm1.Button5Click(Sender: TObject); // как видите, здесь я уже попыталась осуществить сортировку, только вот при нажатии на кнопку ничего не происходит begin if radiobutton1.Checked then begin ADOQuery1.SQL.Add('order by ID'); ADOQuery1.Open; end; if radiobutton2.Checked then begin ADOQuery1.SQL.Add('order by Название'); ADOQuery1.Open; end; if radiobutton3.Checked then begin ADOQuery1.SQL.Add('order by Имя'); ADOQuery1.Open; end; if radiobutton4.Checked then begin ADOQuery1.SQL.Add('order by Фамилия'); ADOQuery1.Open; end; end;
end.
|
|