Hi !
Auf die schnelle: Ein Minitool zum Auslesen der Tabellen und Indizes einer ADOConnection.
Das Formular enthält: Eine AdoConnection, 2 Memos, 1 Button.
Nach ButtonKlick enthält Memo1 die Tabellen der ADOConn, Memo2 den Rohentwurf für das SQLScript.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,
Db, ADODB, AdoConED;
type
TForm1 =
class(TForm)
ADOConn: TADOConnection;
Memo1: TMemo;
Memo2: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function StrRepl(st, s1, s2:
String):
String;
var p,l:Integer;
begin
l:=Length(s1);
p:=pos(s1,st);
while p>0
do
begin
st:=Copy(st,1,p-1)+s2+Copy(st,p+l,255);
p:=pos(s1,st);
end;
Result:=st;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer; TA:TAdoTable;
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
ADOConn.Connected:=False;
EditConnectionString(AdoConn);
ADOConn.Connected:=True;
ADOConn.GetTableNames(Memo1.Lines);
for i:=0
to Memo1.Lines.Count-1
do
begin
TA:=TAdoTable.Create(
nil);
TA.Connection:=ADOConn;
TA.TableName:=Memo1.Lines[i];
TA.IndexDefs.Update;
for j:=0
to TA.IndexDefs.Count-1
do
begin
Memo2.Lines.Add('
CREATE INDEX "'+
TA.IndexDefs.Items[j].
Name+'
" ON "dbo"."'+
TA.TableName+'
" ("'+
StrRepl(TA.IndexDefs.Items[j].Fields,'
;','
","')+'
")');
end;
FreeAndNil(TA);
end;
end;
end.
Das ganze über das ClipBoard transferieren und weiterbearbeiten.
Hoffe das hilft überflüssige Tipparbeit zu vermeiden.