AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Übernehmen der Indizes von Access auf MS-SQL Server möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

Übernehmen der Indizes von Access auf MS-SQL Server möglich?

Ein Thema von localizer · begonnen am 13. Feb 2006 · letzter Beitrag vom 13. Feb 2006
Antwort Antwort
localizer

Registriert seit: 23. Nov 2004
9 Beiträge
 
Delphi 5 Professional
 
#1

Übernehmen der Indizes von Access auf MS-SQL Server möglich?

  Alt 13. Feb 2006, 10:22
Datenbank: Access • Version: 2000 • Zugriff über: ADO
Liebe Forumsgemeinde,

ich habe alle Access Tables auf MS-SQL Expressserver übernommen und möchte mir ersparen die Indizes jeder einzelnen Tabelle neu zu definieren.

Gibt es da eine einfachere Möglichkeit?

Danke.
Danke für eure Unterstützung
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Übernehmen der Indizes von Access auf MS-SQL Server mögl

  Alt 13. Feb 2006, 12:13
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.
Otto
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz