Delphi-PRAXiS
Seite 1 von 11  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ? (https://www.delphipraxis.net/213658-delphi-7-bde-32-bit-wie-eine-datenbank-und-oder-alias-erstellen.html)

paule32.jk 3. Sep 2023 13:26

Datenbank: BDE • Version: 5.01 • Zugriff über: BDE

Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
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 ?

haentschman 3. Sep 2023 14:51

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallöle...8-)

Zitat:

Bitte jetzt nicht Lachen
...eher :cry:

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

Leichte Alternativen:
Firebird 3.0 (ist Ver. 4.0 schon brauchbar? :gruebel:): Moderne Datenbank mit SQL. Klein aber fein. :cheer:
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. :zwinker: Firebird kann sowohl mit einem Server MultiUser oder auch Embedded einzeln. Das regelt der Connectionstring. :zwinker:

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. :wink:

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. :zwinker:
Admin Tool: DBeaver Community https://dbeaver.io/download/

mytbo 3. Sep 2023 15:47

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
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

Delphi.Narium 3. Sep 2023 16:13

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
@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.

Delphi-Quellcode:
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.

Uwe Raabe 3. Sep 2023 16:51

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
Ist ja schon eine ganze Weile her (daher: keine Garantie!), aber ich wenn ich mich recht erinnere musst du dazu
Delphi-Quellcode:
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
Delphi-Quellcode:
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.

jaenicke 3. Sep 2023 18:47

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

Zitat von Uwe Raabe (Beitrag 1526438)
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.

IBExpert 3. Sep 2023 18:54

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

Zitat von haentschman (Beitrag 1526433)
ist Ver. 4.0 schon brauchbar? :gruebel:):

ja, eindeutig :-)

paule32.jk 4. Sep 2023 22:01

AW: Delphi 7 - BDE 32-Bit - Wie eine Datenbank und/oder Alias erstellen ?
 
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;

haentschman 5. Sep 2023 06:11

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

...du hast nicht richtig gelesen / zugehört! :warn:
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. :zwinker: 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 :thumb:)
* mitliefern der DLL "fbclient.dll"
...fertsch. 8-)

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

:wink:

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)

jaenicke 5. Sep 2023 06:28

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

Zitat von paule32.jk (Beitrag 1526472)
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)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 Uhr.
Seite 1 von 11  1 23     Letzte »    

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