Enkel Query Builder bruker ADO komponenter?

Skrive en enkel spørring byggmester bruker ADO komponenter. Denne artikkelen er ment å demonstrere hvordan kan vi bruke ADO komponenter tilgjengelig i Delphi.
Jeg har skrevet et enkelt program som bruker ADO komponenter til hente datakildenavn, tabellnavn, feltnavn, prosedyre navn og et alternativ for å skrive spørringen og kjøre den og vise resultatet i et rutenett funksjonen av søknaden.
Når du kjører programmet, det vil hente alle ODBC datakildenavn fra dagens system og liste i en listeboks. Hvis du velger en datakilde, vil du bli bedt om å oppgi brukernavn og passord. Når du skriver inn riktig brukernavn og passord, tabeller og prosedyrer tilgjengelig i datakilden. Og hvis du klikker på et bord navn, vil alle feltene i tabellen skal listed.And i notatfeltet kan du skrive inn SQL-spørring, og klikk på Execute knappen, vil det utføre spørringen og vise resultatet i nettet below.Also du kan lagre søket til en tekstfil hvis du klikker på lagre button.And i datakildenavn listeboksen, hvis du høyreklikker, vil det være en Refresh menyen og det vil oppdatere ODBC data Source Names .Dette er egentlig en enkel versjon av Query Builder, og vi kan legge til så mange funksjoner som mulig og ville bare dele dere følgende er den komplette koden for søknaden:
Prosjekt Fil:. ADODemo.dprprogram ADODemo; bruker Skjemaer, UADODemo1 i 'UADODemo1.pas' {frmADODemo} ULogin i 'ULogin.pas {frmLogin}; {$ R * res} begynne Application.Initialize; Application.Title: = 'ADO Demo'; Application.CreateForm (TfrmADODemo, frmADODemo); Application.CreateForm (TfrmLogin, frmLogin); Application.Run; end.Unit Fil 1: UADODemo1.pasunit UADODemo1; interfaceuses Windows, Meldinger, SysUtils, varianter, klasser, Grafikk, Kontroller, Skjemaer, dialoger, StdCtrls, DB, DBTables, adodb, ExtCtrls, Knapper, Rister, DBGrids, ComCtrls, Inifiles, Menyer, Const WinNTOr2000 = 'C: \\ WINNT \\'; Win95Or98 = 'C: \\ Windows \\'; ODBCDataSources = 'ODBC 32 bit data Kilder'; skriver TfrmADODemo = klasse (TForm) pnlClientPanel: TPanel; lblDataSources: TLabel; lbxDataSources: TListBox; lblTables: TLabel; lbxTables: TListBox; lblFields: TLabel; lbxFields: TListBox; lblProcedures: TLabel; lbxProcedures: TListBox; memQueryText: TMemo; lblQueryText: TLabel; bitExecute: TBitBtn; bitClose: TBitBtn; bitSaveQuery: TBitBtn; dbgResultData: TDBGrid; lblQueryResult: TLabel; ADOConnection: TADOConnection; sbrStatusBar: TStatusBar; popRefresh: TPopupMenu; mitRefresh: TMenuItem; DlgSaveDialog: TSaveDialog; ADOQuery1: TADOQuery; Prosedyren FormCreate (Sender: TObject); Prosedyren lbxDataSourcesClick (Sender: TObject); Prosedyren bitSaveQueryClick (Sender: TObject); Prosedyren lbxTablesClick (Sender: TObject); Prosedyren bitExecuteClick (Sender: TObject); Prosedyren FormDestroy (Sender: TObject); privat funksjon ODBCPath: String; {Felleserklæringer} offentlige {offentlige erklæringer} ende; Var frmADODemo: TfrmADODemo; DSNSelectedIndex: Integer; implementationuses ULogin, {$ R * .dfm} prosedyre TfrmADODemo.FormCreate (Sender: TObject); //Legge datakilden namesvar DataSources: TStringList; ODBCIniFile: TIniFile; begynne DSNSelectedIndex: = 0; DataSources: = TStringList.Create; ODBCIniFile: = TIniFile.Create (ODBCPath + 'ODBC.INI'); ODBCIniFile.ReadSection (ODBCDataSources, DataSources); lbxDataSources.Items.Assign (DataSources); end; funksjon TfrmADODemo.ODBCPath; //Finne plasseringen av ODBC.INI filevar OSVersionInfo: TOSVersionInfo, begynner OSVersionInfo.dwOSVersionInfoSize: = sizeof (OSVersionInfo); hvis GetVersionEx (OSVersionInfo), og start if ((OSVersionInfo.dwMajorVersion = 5) eller (OSVersionInfo.dwMajorVersion = 4)) og (OSVersionInfo.dwMinorVersion = 0) og (OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) så ODBCPath: = WinNTOr2000 else if (OSVersionInfo .dwPlatformId = VER_PLATFORM_WIN32_NT) så ODBCPath: = WinNTOr2000 else if (OSVersionInfo.dwPlatformId = 3) og (OSVersionInfo.dwMinorVersion = 51) og (OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) så ODBCPath: = WinNTOr2000 annet ODBCPath: = Win95Or98; end, end, prosedyre TfrmADODemo.lbxDataSourcesClick (Sender: TObject); begynne //Hvis noen sammenheng er åpen, deretter lukke det først hvis ADOConnection.Connected deretter ADOConnection.Close; //Viser Database påloggingsboksen frmLogin.edtName.Clear; frmLogin.edtPassword.Clear; hvis frmLogin.ShowModal = mrOk deretter begynne prøve Screen.Cursor: = crHourGlass; ADOConnection.ConnectionString: = 'Bruker ID =' + frmLogin.edtName.Text + '; Password =' ​​+ frmLogin.edtPassword.Text + '; Data Source =' + lbxDataSources.Items [lbxDataSources.ItemIndex]; ADOConnection.Connected: = true; DSNSelectedIndex: = lbxDataSources.ItemIndex; lbxTables.Clear; lbxProcedures.Clear; lbxFields.Clear; ADOConnection.GetTableNames (lbxTables.Items); ADOConnection.GetProcedureNames (lbxProcedures.Items); Screen.Cursor: = crDefault; bortsett Screen.Cursor: = crDefault; lbxTables.Clear; lbxProcedures.Clear; lbxFields.Clear; MessageDlg ( 'Kan ikke koble til "+ lbxDataSources.Items [lbxDataSources.ItemIndex], mtInformation, [mbOk], 0); slutt; ende annet begynne lbxDataSources.Selected [DSNSelectedIndex]: = true; end, end, prosedyre TfrmADODemo.bitSaveQueryClick (Sender: TObject); //Lagre skrevet spørringen til en tekst filebegin hvis DlgSaveDialog.Execute deretter memQueryText.Lines.SaveToFile (DlgSaveDialog.FileName); end; prosedyre TfrmADODemo.lbxTablesClick (Sender: TObject ); //Å få navnene Felt mens du klikker på bordet namesbegin lbxFields.Clear; ADOConnection.GetFieldNames (lbxTables.Items [lbxTables.ItemIndex], lbxFields.Items); end; prosedyre TfrmADODemo.bitExecuteClick (Sender: TObject); //Gjennomføring av querybegin prøve hvis (ADOConnection.Connected) og (Trim (memQueryText.Lines. tekst) < > ''), og start ADOQuery1.Connection: = ADOConnection; ADOQuery1.SQL.AddStrings (memQueryText.Lines); ADOQuery1.ExecSQL; dbgResultData.DataSource.DataSet: = ADOQuery1.DataSource.DataSet; slutt; bortsett MessageDlg ( 'Feil Viser Data', mtInformation, [mbOk], 0); end, end, prosedyre TfrmADODemo.FormDestroy (Sender: TObject); //Lukke ADO Connection hvis det connectedbegin hvis ADOConnection.Connected deretter ADOConnection.Close; ende; end.Whenever vi velge en datakilde navn fra listeboksen, en dialog database innlogging vil komme opp å spørre oss om å skrive inn brukernavn og passord for at DSN og når vi går inn riktig brukernavn og passord, vil vi være logget inn og tabellene, vil prosedyrene bli listed.Unit Fil 2: Ulogin.pasunit ULogin; interfaceuses Windows, Meldinger, SysUtils, Varianter, Klasser, grafikk, kontroller, skjemaer, Dialoger, ExtCtrls, ComCtrls, StdCtrls, Knapper, skriver TfrmLogin = klasse (TForm) pnlClient: TPanel; lblName: TLabel; lblPassword: TLabel; edtName: TEdit; edtPassword: TEdit; sbrStatusBar: TStatusBar; bitOK: TBitBtn; bitClose: TBitBtn; Prosedyren FormShow (Sender: TObject); private {felleserklæringer} offentlige {offentlige erklæringer} end; Var frmLogin: TfrmLogin, gjennomføring {$ R * .dfm} prosedyre TfrmLogin.FormShow (Sender: TObject); begynne edtName.SetFocus; end; End.I har ikke tatt den. DFM filer med dette; men håper du enkelt kan finne ut de komponentene jeg har brukt ved hjelp av .pas files.Even om det er så mange spørre utbyggere tilgjengelig, jeg ville bare prøve med ADO komponenter fra Delphi og kommer til å utvide dette ved å legge til flere funksjoner. Jeg er veldig glad for å ønske dine ideer om this.Thanks.Magesh.