Escribir una simple consulta constructor usando componentes ADO.

Este artículo se destina a demostrar de qué manera podemos utilizar el ADO componentes disponibles en Delphi.

He escrito una simple aplicación que utiliza componentes ADO para recuperar el origen de datos los nombres, nombres de tablas, nombres de los campos, nombres de Procedimiento y una opción para escribir y ejecutar la consulta y mostrar el resultado en una cuadrícula.

La función de la solicitud:

Cuando se ejecuta la aplicación, lo más fácil es que buscar todos los ODBC con los nombres del actual sistema y la lista en un cuadro de lista. Si selecciona un nombre de origen de datos, se le pedirá que introduzca el nombre de usuario y contraseña. Una vez que se introduzca el derecho de nombre de usuario y contraseña, los cuadros y los procedimientos disponibles en el origen de datos. Y si haces clic en un nombre de tabla, todos los campos de la tabla se enumeran.

Y en el campo memo, puede entrar en la consulta SQL y haga clic en el botón Ejecutar, se podrá ejecutar la consulta y mostrar el resultado en la red a continuación.

También puede guardar la consulta a un archivo de texto si hace clic en el botón Guardar.

Y en la Fuente de Datos de Nombres cuadro de lista, si el botón derecho del ratón, habrá un menú Actualizar y lo más fácil es que actualizar el origen de datos ODBC Nombres.

Esto es realmente una simple versión de consultas y podemos añadir como muchas características como sea posible y sólo quería compartir ustedes.

Lo que sigue es el código completo de la solicitud:

Proyecto de archivo: ADODemo.dpr
ADODemo programa;
usos
Formas,
UADODemo1 en 'UADODemo1.pas' () frmADODemo,
ULogin en 'ULogin.pas' frmLogin ();

($ R *. res)

empezar
Application.Initialize;
Application.Title: = 'ADO Demo';
Application.CreateForm (TfrmADODemo, frmADODemo);
Application.CreateForm (TfrmLogin, frmLogin);
Application.Run;
final.
Archivo Unidad 1: UADODemo1.pas

UADODemo1 unidad;

interfaz

usos
Windows, Messages, SysUtils, las variantes, las clases, gráficos, controles, formularios,
Diálogos, StdCtrls, DB, DBTables, ADODB, ExtCtrls, botones, Grids, DBGrids,
ComCtrls, Inifiles, Menús;

Const
WinNTOr2000 = 'C: \ WinNT \';
Win95Or98 = 'C: \ Windows \';
ODBCDataSources = 'ODBC de 32 bits de datos Fuentes';
tipo
TfrmADODemo = class (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;
procedimiento FormCreate (Sender: TObject);
procedimiento lbxDataSourcesClick (Sender: TObject);
procedimiento bitSaveQueryClick (Sender: TObject);
procedimiento lbxTablesClick (Sender: TObject);
procedimiento bitExecuteClick (Sender: TObject);
procedimiento FormDestroy (Sender: TObject);
privado
ODBCPath función: String;
() Declaraciones Privado
público
() Declaraciones públicas
final;

var
frmADODemo: TfrmADODemo;
DSNSelectedIndex: Integer;

aplicación

ULogin usos;

($ R *. dfm)

procedimiento TfrmADODemo.FormCreate (Sender: TObject);
/ / Carga de la fuente de datos los nombres de
var
Fuentes de datos: TStringList;
ODBCIniFile: TIniFile;
empezar
DSNSelectedIndex: = 0;
Fuentes de datos: = TStringList.Create;
ODBCIniFile: = TIniFile.Create (ODBCPath + 'ODBC.INI');
ODBCIniFile.ReadSection (ODBCDataSources, Fuentes de datos);
lbxDataSources.Items.Assign (Fuentes de datos);
final;

TfrmADODemo.ODBCPath función;
/ / Encontrar la ubicación del archivo ODBC.INI
var
OSVersionInfo: TOSVersionInfo;
empezar
OSVersionInfo.dwOSVersionInfoSize: = SizeOf (OSVersionInfo);
si GetVersionEx (OSVersionInfo) y luego
empezar
if ((OSVersionInfo.dwMajorVersion = 5) o (OSVersionInfo.dwMajorVersion = 4)) y
(OSVersionInfo.dwMinorVersion = 0) y
(OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) y luego
ODBCPath: = WinNTOr2000
else if (OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) y luego
ODBCPath: = WinNTOr2000
else if (OSVersionInfo.dwPlatformId = 3) y (OSVersionInfo.dwMinorVersion = 51)
y (OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) y luego
ODBCPath: = WinNTOr2000
algo más
ODBCPath: = Win95Or98;
final;
final;

procedimiento TfrmADODemo.lbxDataSourcesClick (Sender: TObject);
empezar
/ / Si alguna conexión está abierta, a continuación, cierre por primera vez
entonces si ADOConnection.Connected
ADOConnection.Close;
/ / Listado de la base de datos cuadro de diálogo Iniciar sesión
frmLogin.edtName.Clear;
frmLogin.edtPassword.Clear;
si frmLogin.ShowModal = mrOk entonces
empezar
intentar
Screen.Cursor: = crHourGlass;
ADOConnection.ConnectionString: = 'User 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;
excepto
Screen.Cursor: = crDefault;
lbxTables.Clear;
lbxProcedures.Clear;
lbxFields.Clear;
MessageDlg ( 'No se puede conectar a' + lbxDataSources.Items [lbxDataSources.ItemIndex], mtInformation, [mbOk], 0);
final;
final
algo más
empezar
lbxDataSources.Selected [DSNSelectedIndex]: = True;
final;
final;

procedimiento TfrmADODemo.bitSaveQueryClick (Sender: TObject);
/ / Guardar el escrito de consulta en un archivo de texto
empezar
entonces si DlgSaveDialog.Execute
memQueryText.Lines.SaveToFile (DlgSaveDialog.FileName);
final;

procedimiento TfrmADODemo.lbxTablesClick (Sender: TObject);
/ / Obtener los nombres de campo mientras hace clic en los nombres de tabla
empezar
lbxFields.Clear;
ADOConnection.GetFieldNames (lbxTables.Items [lbxTables.ItemIndex], lbxFields.Items);
final;

procedimiento TfrmADODemo.bitExecuteClick (Sender: TObject);
/ / Ejecutar la consulta
empezar
intentar
if (ADOConnection.Connected) y (Trim (memQueryText.Lines.Text) <>'') y luego
empezar
ADOQuery1.Connection: = ADOConnection;
ADOQuery1.SQL.AddStrings (memQueryText.Lines);
ADOQuery1.ExecSQL;
dbgResultData.DataSource.DataSet: = ADOQuery1.DataSource.DataSet;
final;
excepto
MessageDlg ( 'Error Listado de datos', mtInformation, [mbOk], 0);
final;
final;

procedimiento TfrmADODemo.FormDestroy (Sender: TObject);
/ / Cerrar la conexión ADO si está conectado
empezar
entonces si ADOConnection.Connected
ADOConnection.Close;
final;

final.

Cada vez que seleccione un nombre de origen de datos desde el cuadro de lista, una base de datos de acceso de diálogo llegará hasta nos pide que introduzca el nombre de usuario y la contraseña de DSN y que una vez que introduzca el correcto nombre de usuario y contraseña, que se registra en los cuadros y , los procedimientos serán enumerados.

Archivo Unidad 2: Ulogin.pas

ULogin unidad;

interfaz

usos
Windows, Messages, SysUtils, las variantes, las clases, gráficos, controles, formularios,
Diálogos, ExtCtrls, ComCtrls, StdCtrls, botones;

tipo
TfrmLogin = class (TForm)
pnlClient: TPanel;
lblName: TLabel;
lblPassword: TLabel;
edtName: TEdit;
edtPassword: TEdit;
sbrStatusBar: TStatusBar;
bitOK: TBitBtn;
bitClose: TBitBtn;
procedimiento FormShow (Sender: TObject);
privado
() Declaraciones Privado
público
() Declaraciones públicas
final;

var
frmLogin: TfrmLogin;

aplicación

($ R *. dfm)

procedimiento TfrmLogin.FormShow (Sender: TObject);
empezar
edtName.SetFocus;
final;

final.

No he incluido el. Dfm archivos con este, pero espero que pueda encontrar fácilmente los componentes que han utilizado utilizando la extensión. Pas archivos.

Aunque hay tantos constructores de consulta disponibles, sólo quería tratar con los componentes ADO de Delphi y va a ampliar el presente mediante la adición de más características. Me complace mucho dar la bienvenida a sus ideas sobre este tema.

Gracias.
Magesh.

Average rating: