Einzelnen Beitrag anzeigen

Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
218 Beiträge
 
Delphi 11 Alexandria
 
#1

Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?

  Alt 3. Sep 2023, 13:26
Datenbank: BDE • Version: 5.01 • Zugriff über: BDE
Hallo,

Bitte jetzt nicht Lachen - ich weiß, BDE ist Tot, auch das Delphi 7, aber trotzdem die Frage(n):

- ich möchte eine BDE-Datenbank erstellen, okay
- dazu brauche ich Admin-Rechte, okay
- die/der BDE-Administration läuft, okay (getestet, und okay)
- manuell kann ich neue Datenbanken anlegen
- ich verwende als Treiber: STANDARD
- ich verwende als Tabellen-Typ: DBASE/PARADOX
- ich kann manuell Pfade zu den Bestandsdatendateien setzen
- die einzelnen .dbf Dateien können dann auch angesprochen, und angezeigt werden

- leider schaffe ich es nicht, Datenbanken per Code, während der Laufzeit zu erzeugen
- auch, nachdem das mein Programm im Admin-Modus gestartet wurde, wird die Datenbank
nicht angelegt
- den folgenden Code habe ich für meine Versuche verwendet
Delphi-Quellcode:
procedure foo;
var
  BDE_found : Boolean;
  BdeAdmin : TDataBase;
begin
  BDEAdmin := TDataBase.Create(nil);
  BDE_found := false;
  try
    try
      BDEAdmin.AliasName := 'DataBaseName';
      BDEAdmin.DatabaseName := 'DataBaseName';
      BDEAdmin.DriverName := 'STANDARD';
      BDEAdmin.Open;

    except
      on E: EDBEngineError do
      begin
        for i := 0 to E.ErrorCount - 1 do
        begin
          case E.Errors[i].ErrorCode of
            0: begin {no error} BDE_found := true; end;
            1: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: '  + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Database not found.');
               end;
            2: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: '  + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Error in BDE-Config.');
               end;
            3: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: '  + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Network BDE-Error.');
               end;
            4: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: '  + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Access Table or Folder Problem.');
               end;
            5: begin
                 ShowMessage('BDE Error:'
                 + #13#10 + 'Number: '  + IntToStr(E.Errors[i].ErrorCode)
                 + #13#10 + 'Message: ' + 'Internal BDE-Error');
               end;
            else begin
              ShowMessage('BDE Error:'
              + #13#10 + 'Number: '  + IntToStr(E.Errors[i].ErrorCode)
              + #13#10 + 'Message: ' + E.Errors[i].Message);
            end;
          end;
        end;

        if not(BDE_found) then
        begin
          BDEAdmin.Free;
          BDEAdmin := nil;
          Close;
        end;
      end;
      on E: Exception do
      begin
        ShowMessage('Exception Error:'
        + #13#10 + 'Class: '   + E.ClassName
        + #13#10 + 'Message: ' + E.Message);
        BDEAdmin.Free;
        BDEAdmin := nil;
        Close;
      end;
    end
  finally
  ShowMessage('no errrror');
    BDEAdmin.Close;

      BDEAdmin.AliasName := 'DataBaseName';
      BDEAdmin.DatabaseName := 'DataBaseName';
      BDEAdmin.DriverName := 'STANDARD';
      BDEAdmin.Open;
// hier kommt auch kein Fehler
    BDEAdmin.Free;
    BDEAdmin := nil;
  end;
end;
hat dazu jemand eine Lösung ?
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat