AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von paule32.jk · begonnen am 3. Sep 2023 · letzter Beitrag vom 18. Okt 2023
Antwort Antwort
Seite 1 von 11  1 23     Letzte »    
Benutzerbild von paule32.jk
paule32.jk

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

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

  Alt 3. Sep 2023, 14: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
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 3. Sep 2023, 15:51
Hallöle...

Zitat:
Bitte jetzt nicht Lachen
...eher

Tu dir selber einen Gefallen. KEINE BDE, KEIN Paradox!.

Leichte Alternativen:
Firebird 3.0 (ist Ver. 4.0 schon brauchbar? ): Moderne Datenbank mit SQL. Klein aber fein.
https://firebirdsql.org/en/firebird-3-0/ Download: "Firebird-3.0.11.33703_0_x64.exe"
Mit einem 32Bit Programm kann man auch auf den 64Bit Server connecten. Firebird kann sowohl mit einem Server MultiUser oder auch Embedded einzeln. Das regelt der Connectionstring.

Zugriffskomponenten FREE:
ZEOS: Version 7.2 unterstützt D7 https://sourceforge.net/projects/zeo...7.2.14-stable/

1. Download Firebird.
2. Install Frebird
3. Download ZEOS
4. Install ZEOS

...dann melde dich wieder.

PS:
Ich designe die Datenbanken immer mit einem Admin Tool. Die Datenbank zur Laufzeit erzeugen (per SQL) geht, ist aber imho nicht das gelbe vom Ei.
Admin Tool: DBeaver Community https://dbeaver.io/download/
Miniaturansicht angehängter Grafiken
dbeaver.png  

Geändert von haentschman ( 3. Sep 2023 um 16:57 Uhr)
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#3

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

  Alt 3. Sep 2023, 16:47
Als Ergänzung zum Beitrag von Andreas der Verweis auf mORMot (Delphi 7 kompatibel). Die Bibliothek kann viele Datenbanken ansprechen. In deinem Fall dürft SQLite (embedded) eine gute Wahl sein. Der schnelle Einstieg ist in diesem Artikel beschrieben. mORMot muss nicht in der IDE installierten werden! Es reicht aus, die Bibliothek mit den Static-Dateien in ein Verzeichnis zu kopieren und die entsprechenden Bibliothekspfade anzulegen. In 3 Minuten ist es auf dem Rechner und bei Nichtgefallen in 3 Sekunden wieder spurlos entfernt. Es stehen viele Beispiele und ein freundliches Forum zur Verfügung.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#4

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

  Alt 3. Sep 2023, 17:13
@paule32.jk

Du erstellst mit dem Code auch keine Datenbank, sondern allenfalls nur eine Verbindung zu einer nicht existierenden Datenbank.

Du musst dann mindestens auch eine Tabelle erstellen. Für die BDE unter Delphi 7 kannst Du da die Komponente TTable nutzen. Dort im Objektinstektor oder per Code die Spalten definieren, bei Bedarf den einen oder anderen Index anlegen, den Tabellennamen vergeben, TDataBase-Komponenten zuweisen und dann die Tabelle erstellen.

if not Table1.Exists then Table1.CreateTable; Danach sollte dann eine Tabelle in Deiner "Datenbank" enthalten sein. Per SQL geht's auch über die Komponente TQuery.

Da Paradox und DBase dateibasierte "Datenbanken" sind, können sie nicht "erstellt" werden. Sie bestehen praktisch nur aus einem Verzeichnis auf der Festplatte. Und solange noch keine Tabelle erstellt wurde, muss auch dieses Verzeichnis nicht existieren. Eigentlich ist eine Paradox- bzw. DBase-Datenbank nichts weiter als ein Verzeichnis auf 'nem Datenträger mit einer mehr oder weniger großen Anzahl von Paradox- bzw. DBasedateien. Eine Datenbank im eigentlichen Sinne gibt es hier nicht.

Du machst also quasi alles richtig, im Programm besteht nur eine TDataBase-Komponenten die auf die Möglichkeit einer potenziellen Datenbank hinweist.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 3. Sep 2023, 17:51
Ist ja schon eine ganze Weile her (daher: keine Garantie!), aber ich wenn ich mich recht erinnere musst du dazu BDEAdmin.Session.AddStandardAlias(<AliasName>, <DataBasePath>, ''); aufrufen. Der Alias ist dann aber permanent und ein weiterer Aufruf führt zu einem Fehler. Das kannst du aber mit IsAlias vorher prüfen.

Es ist aber in der Tat so, dass das ganze BDE-Gedöns ab Windows Vista nicht mehr so wirklich funktioniert, ohne dass man da ein paar unschöne Verrenkungen einbaut.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 3. Sep 2023, 19:47
Es ist aber in der Tat so, dass das ganze BDE-Gedöns ab Windows Vista nicht mehr so wirklich funktioniert, ohne dass man da ein paar unschöne Verrenkungen einbaut.
Oh ja, da habe ich seinerzeit einiges eingebaut...
- Hook für Festplattengrößenabfrage wegen 32-Bit Überlauf
- Drei Änderungen zur Laufzeit auf Assemblerebene in der idapi32.dll, damit es keine Zugriffsverletzungen gab, z.B. beim Beenden
- Eine größere Änderung in der idapi32.dll zur Initialisierung der SHARED_MEM_LOCATION
Dazu ein paar Konfigurationsanweisungen für Windows bei Nutzung von Dateifreigaben (LeasingMode für neue Versionen, Deaktivierung der OpLocks usw. für ältere, ...), dann lief die BDE echt gut. Aber die Verrenkungen und damit die BDE machen für neue Projekte keinerlei Sinn.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
680 Beiträge
 
FreePascal / Lazarus
 
#7

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

  Alt 3. Sep 2023, 19:54
ist Ver. 4.0 schon brauchbar? ):
ja, eindeutig
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

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

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

  Alt 4. Sep 2023, 23:01
Hallo,
Danke Euch für Euer Feedback !
Ich habe mir aber mal erlaubt, doch mal bissl rumzubasteln und zu stöpseln ...
Es geht mir ja auch dadrum, eine Datenbank zu Haben, die von unbedarften Usern
installiert werden kann - Ihr wisst ja - GAUF - Größter Anzunehmender User Fehler...
Man braucht auch keine Admin Rechte, um die Registry zu wursteln, aber ich habe mal
im Code eine Abfrage eingetragen - sicher ist sicher ...
nur mal so, ein Snippet:
Delphi-Quellcode:
function isAdmin: Boolean;
const
  DOMAIN_ALIAS_RID_ADMINS = $00000220;
  SECURITY_BUILTIN_DOMAIN_RID = $00000020;
  SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));
var
  Admin: Boolean;
  AdmGroup: PSID;
Begin
  Admin := AllocateAndInitializeSid(SECURITY_NT_AUTHORITY,
    2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
    0, 0, 0, 0, 0, 0, AdmGroup);
  If (Admin) Then
  Begin
    If (not CheckTokenMembership(0, AdmGroup, Admin)) Then
      Admin := False;
    FreeSid(AdmGroup);
  end;
  Result := Admin;
end;

// -------------------------------------------------------------
// rs_xxx are the Locale's .ENU, .DEU files. default is: ENU ...
// -------------------------------------------------------------
resourcestring
  rs_Internal_Error = 'internal error.';
  rs_BDE_notInstalled = 'No BDE Installation found !';
  rs_BDE_Error = 'BDE Error:';
  rs_BDE_AppStart_Rej = 'Aborted start.';
  rs_App_First_Run = 'You run this Application at first race !' + #13#10 +
                        'Would You do a Setup of needed Stuff ?';
  rs_App_User_Mode = 'You run this Application with User rights !'      + #13#10 +
                        'If You confirm this Dialog with "Yes", it can be' + #13#10 +
                        'that the Application does not work.'              + #13#10 +
                        '' + #13#10 +
                        'Would You start the Application without Admin rights ?';
  rs_ClassName = 'Class-Name: ';
  rs_Message = 'Message: ';
  rs_Exception_Error = 'Exception Error:';
  rs_File_Exists = 'The file already exists !' + #13#10 +
                        'Would you override the old Version ?';

  rs_BDE_EClassName = 'Error-Class: ';
  rs_BDE_ECode = 'Error-Code: ';
  rs_BDE_EMessage = 'Error-Message: ';
  rs_BDE_EFile = 'Error-File: ';
  rs_BDE_EModule = 'Error-Module: ';
  rs_BDE_EProc = 'Error-Proc: ';
  rs_BDE_ELine = 'Error-Line: ';

  rs_BDE_Error_TableDontExists = 'Table does not exists.';
  rs_Win32_Registry_Error = 'Win32-Registry Error:';

procedure TForm1.FormCreate(Sender: TObject);
const
  BDE_DLLs: array [0..2] of string = (
    'IDAPI32.DLL',
    'IDR20009.DLL',
    'IDR20009.DLL'
  );
  BDEAlias = 'DataBaseName';
  BDECoTbl = 'test.dbf';
  BDELevel = 0;
var
  I,J : Integer;
  text : WideString;
  xpos, ypos : Integer;
  row, col : Integer;
  S : String;
  B : Boolean;
  BDE_found : Boolean;
  Index : Integer;
  reg : TRegistry;
  H : HDBISes;
  letter1 : Char;
  letter2 : Char;
  buffer : Array[0..MAX_PATH] of Char;
  BDEList : TStringList;
  BDESession : TSession;
  BdeAdmin : TDataBase;
  BDETable : TTable;
  BDEQuery : TQuery;
  BDEDataSrc : TDataSource;
  SystemFolder: String;
  SQLstmt : String;
  stmtParams : TParams;


  procedure FreeBDESetup;
  begin
    if Assigned(BDEList) then
    begin
      BDEList.Clear;
      BDEList.Free;
      BDEList := nil;
    end;

    if Assigned(BDEQuery) then
    begin
      BDEQuery.SQL.Clear;
      BDEQuery.Free;
      BDEQuery := nil;
    end;

    if Assigned(BDETable) then
    begin
      BDETable.Close;
      BDETable.Free;
      BDETable := nil;
    end;

    if Assigned(BDEAdmin) then
    begin
      BDEAdmin.Close;
      BDEAdmin.Free;
      BDEAdmin := nil;
    end;

    if Assigned(BDESession) then
    begin
      BDESession.Close;
      BDESession.DeleteAlias(BDEAlias);
      BDESession.Free;
      BDESession := nil;
    end;

    if Assigned(reg) then
    begin
      reg.Free;
      reg := nil;
    end;

    if Assigned(h) then
    begin
      DBICloseSession(h);
      DBIExit;
      h := nil;
    end;
  end;
begin
  // -------------------------------------------------
  // first, check if the BDE is installed.
  // one step is, to locate the BDE Win32 Registry key
  // second step, try to locate per path.
  // -------------------------------------------------
  BDE_found := true;
  reg := Tregistry.Create;
  try
    try
      reg.RootKey := HKEY_LOCAL_MACHINE;
      B := reg.OpenKeyReadOnly('SOFTWARE\Borland\Database Engine');
      if not(B) then
      begin
        GetSystemDirectory(buffer, SizeOf(buffer));
        SystemFolder := StrPas(buffer);

        for I := Low(BDE_DLLs) to High(BDE_DLLs) do
        begin
          if not FileExists(SystemFolder + '\' + BDE_DLLs[I]) then
          begin
            BDE_found := false;
            break;
          end;
        end;
      end
    except
      on E: Exception do
      begin
        ShowMessage(rs_Win32_Registry_Error
        + #13#10 + rs_ClassName + E.ClassName
        + #13#10 + rs_Message + E.Message);
        FreeBDESetup;
        Close;
      end;
    end;
  finally
    FreeBDESetup;

    if not(BDE_found) then
    begin
      ShowMessage(
      rs_BDE_notInstalled + #13#10 +
      rs_BDE_AppStart_Rej);
      Close;
    end;
  end;

  // ------------------------------------
  // look, if database is present, if not
  // than try to create it ...
  // ------------------------------------
  BDEAdmin := TDataBase.Create(nil);
  BDE_found := false;
  try
    try
      S := ExtractFilePath(Application.ExeName);
      S := S + 'data';

      // -----------------------------------------
      // warn the user, if run with admin rights
      // if true then check data + password, else
      // continue as normal user.
      // -----------------------------------------
      if not(DirectoryExists(S)) then
      begin
        I := MessageDlg(rs_App_First_Run,
        mtWarning,[mbYes, mbNo],0);
        if I = mrNo then
        begin
          Close;
        end;
        if not(isAdmin) then
        begin
          I := MessageDlg(rs_App_User_Mode,
          mtWarning,[mbYes, mbNo],0);
          if I = mrNo then
          begin
            Close;
          end;
        end;

        CreateDir(S);
      end;

      // --------------------------------
      // check, if 'databasename' exists
      // --------------------------------
      if not(Assigned(BDEList)) then
      BDEList := TStringList.Create;
      BDEList.Clear;

      BDESession := TSession.Create(nil);
      BDESession.SessionName := BDEAlias;

      // no, then create it
      if BDEList.IndexOf(BDEAlias) < 0 then
      begin
        DBIInit(nil);
        DBIStartSession('dummy',h,'');
        DBIAddAlias(nil,
        PChar(BDEAlias),
        PChar('DBASE'),
        PChar('PATH=' + S),
        true);
        DBICloseSession(h);
        DBIExit;
        h := nil;
      end;

      // -------------------------------
      // sanity check ...
      // -------------------------------
      BDESession.Open;
      BDESession.GetDatabaseNames(BDEList);

      if BDEList.IndexOf(BDEAlias) < 0 then
      raise Exception.Create(
      'BDE Error:'   + #13#10 +
      'internal Error.');

      if not(Assigned(BDEAdmin)) then
      BDEAdmin := TDataBase.Create(nil);
      BDEAdmin.DatabaseName := BDEAlias;
      BDEAdmin.Directory := S;
      BDEAdmin.Open;

      try
        // -------------------------------
        // check, if data table exists ...
        // -------------------------------
        BDEQuery := TQuery.Create(nil);
        BDEQuery.DatabaseName := BDEAlias;
        BDEQuery.SQL.Text :=
        'SELECT COUNT(*) AS TableCount ' +
        'FROM SYSALIASES A ' +
        'INNER JOIN TABLES T ON A.PATH = T.PATH ' +
        'WHERE A.ALIASNAME = ''' + BDEAlias + '''' + ' ' +
        'AND T.TBLNAME = ''' + S + '\'  + BDECoTbl + '''' ;

        BDEQuery.Open;
      except
        on E: EDBEngineError do
        begin
          BDE_found := true;
          for I := 0 to E.ErrorCount - 1 do
          begin
            // table does not exists...
            if E.Errors[I].ErrorCode = 10024 then
            begin
              BDE_found := false;
              break;
            end;
          end;

          if not(BDE_found) then
          begin
            try
              BDEQuery.Close;

              BDEQuery.SQL.Clear;
              BDEQuery.SQL.Text :=
              'CREATE TABLE ''' + S + '\' + BDECoTbl + ''' (' +
              'COL1 int,' +
              'COL2 int)';

              BDEQuery.ExecSQL;
            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
                      break;
                    end;
                    10024,
                    13057:
                    begin
                      // table exists
                      break;
                    end else
                    begin
                      ShowMessage(rs_BDE_Error
                      + #13#10 + rs_BDE_EClassName + E.ClassName
                      + #13#10 + rs_BDE_ECode + IntToStr(E.Errors[i].ErrorCode)
                      + #13#10 + rs_BDE_EMessage + E.Errors[i].Message
                      + #13#10 + rs_BDE_EFile + FileByLevel (BDELevel)
                      + #13#10 + rs_BDE_EModule + ModuleByLevel(BDELevel)
                      + #13#10 + rs_BDE_EProc + ProcByLevel (BDELevel)
                      + #13#10 + rs_BDE_ELine + IntToStr(LineByLevel(BDELevel)));

                      FreeBDESetup;
                      Close;
                    end;
                  end;
                end;
              end;
            end
          end;
        end;
      end;

      // -------------------------------
      // sanity check ...
      // -------------------------------
      BDEList.Clear;

      BDEAdmin.DatabaseName := BDEAlias;
      BDEAdmin.Connected := true;

      if not(Assigned(BDESession)) then
      begin
        BDESession := TSession.Create(nil);
        BDESession.SessionName := BDEAlias;
      end;

      if not(Assigned(BDETable)) then
      BDETable := TTable.Create(nil);
      BDETable.DatabaseName := BDEAdmin .DatabaseName;
      BDETable.SessionName := BDESession.SessionName;
      BDETable.TableName := S + '\test.dbf';

    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;
            else begin
              ShowMessage(rs_BDE_Error
              + #13#10 + rs_BDE_EClassName + E.ClassName
              + #13#10 + rs_BDE_ECode + IntToStr(E.Errors[i].ErrorCode)
              + #13#10 + rs_BDE_EMessage + E.Errors[i].Message
              + #13#10 + rs_BDE_EFile + FileByLevel (BDELevel)
              + #13#10 + rs_BDE_EModule + ModuleByLevel(BDELevel)
              + #13#10 + rs_BDE_EProc + ProcByLevel (BDELevel)
              + #13#10 + rs_BDE_ELine + IntToStr(LineByLevel(BDELevel)));
            end;
          end;
        end;

        FreeBDESetup;
        Close;
      end;
      on E: Exception do
      begin
        ShowMessage(rs_Exception_Error
        + #13#10 + rs_BDE_EClassName + E.ClassName
        + #13#10 + rs_BDE_EMessage + E.Message
        + #13#10 + rs_BDE_EFile + FileByLevel (BDELevel)
        + #13#10 + rs_BDE_EModule + ModuleByLevel(BDELevel)
        + #13#10 + rs_BDE_EProc + ProcByLevel (BDELevel)
        + #13#10 + rs_BDE_ELine + IntToStr(LineByLevel(BDELevel)));

        FreeBDESetup;
        Close;
        exit;
      end;
    end
  finally
    FreeBDESetup;
  end;
end;
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet

Geändert von paule32.jk ( 4. Sep 2023 um 23:13 Uhr) Grund: isAdmin Funktion hinzugefügt
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 5. Sep 2023, 07:11
Moin...

...du hast nicht richtig gelesen / zugehört!
Zitat:
Es ist aber in der Tat so, dass das ganze BDE-Gedöns ab Windows Vista nicht mehr so wirklich funktioniert
.
.
.
Zitat:
Es geht mir ja auch dadrum, eine Datenbank zu Haben, die von unbedarften Usern installiert werden kann
Dann bist du mit er BDE erst Recht falsch! Die BDE muss auf jedem System, wo das Programm läuft, installiert sein.

Lösung: Firebird Embedded. Alternative: SQLite (kein MultiUser), andere DLL

* KEINE Installation der BDE beim Kunden...weil nicht gebraucht
* KEIN Registry Gedöns
* KEIN Admin Gedöns
* KEINE Serverinstallation nötig.
* Datenbank mit dem Programm mitliefern (eine Datei )
* mitliefern der DLL "fbclient.dll"
...fertsch.

Laß von der BDE die Finger! Muß man dich zu deinem Glück zwingen?



Fragen an dich (damit wir wissen welchen Kenntnisstand du hast):
* Unterschied Table und Query?
* was ist ein Index?
* was ist SQL?
* was ist SQL Injection? (für später)

Geändert von haentschman ( 5. Sep 2023 um 07:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#10

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

  Alt 5. Sep 2023, 07:28
Es geht mir ja auch dadrum, eine Datenbank zu Haben, die von unbedarften Usern
installiert werden kann
Und deshalb möchtest du eine Datenbank haben, die ohne Adminrechte nicht installiert werden kann und unter neueren Betriebssystemen ohne manuelles Zutun der Nutzer nicht immer sauber läuft?

Statt einer Datenbank, die ohne Installation einfach so in deinem Anwendungsverzeichnis läuft? (Firebird Embedded)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 11  1 23     Letzte »    

 

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 03:52 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