AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ADS_LOCAL Zugriff mehrer Nutzer
Thema durchsuchen
Ansicht
Themen-Optionen

ADS_LOCAL Zugriff mehrer Nutzer

Ein Thema von mjank · begonnen am 13. Dez 2018 · letzter Beitrag vom 13. Dez 2018
Antwort Antwort
mjank

Registriert seit: 5. Dez 2018
12 Beiträge
 
#1

ADS_LOCAL Zugriff mehrer Nutzer

  Alt 13. Dez 2018, 17:27
Datenbank: ADS_LOCAL • Version: 10.10 • Zugriff über: Delphi
Ich habe eine kleine Anwendung in Delphi geschrieben,
die Projektdaten organisieren soll.
Dies erfordert nun den gleichzeitigen Zugriff mehrerer Personen.
Meist wollen alle nur lesen. Es wird maximal einer schreiben.

Nachdem, was ich bislang hier gelesen habe, müsste der Zugriff für maximal 5 Nutzer möglich sein.
Wird die Anwendung von einem zweiten Nutzer gestartet, bekomme ich einen EADSDatabaseError.

In der Table ist Exclusive := False;

Ich hoffe, ihr habt einen Tip für mich.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#2

AW: ADS_LOCAL Zugriff mehrer Nutzer

  Alt 13. Dez 2018, 17:55
es gibt sicherlich noch mehr Information über den Fehler ...
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
mjank

Registriert seit: 5. Dez 2018
12 Beiträge
 
#3

AW: ADS_LOCAL Zugriff mehrer Nutzer

  Alt 13. Dez 2018, 17:59
Delphi-Quellcode:
procedure Tfrm_Hauptform.Timer1Timer(Sender: TObject);
var
  FDock : boolean;
  Fa : integer;
  FClients : integer;

begin

  Timer1.Enabled := false;

  try

    //
    // ALS-Datenbanken
    //

    AdsConnection_Daten.IsConnected := False;
    AdsConnection_Daten.ConnectPath
      := extractfilepath(application.exename) + 'Daten';
    AdsConnection_Daten.IsConnected := true;


    // Datenbank "DB_Projekte" prüfen und öffnen
    If FileExists(extractfilepath(application.exename)
        + 'Daten\DB_Projekte.adt')
      then begin

        DB_Projekte.Exclusive := false;
        DB_Projekte.Active := false;
        DB_Projekte.TableName := 'DB_Projekte.ADT';
        DB_Projekte.Active := true;
        DB_Projekte.edit;


  FClients := Panel1.DockClientCount - 1;
  if FClients = (-1) then FDock := true;


  for Fa := 0 to FClients do
   begin
     Panel1.DockClients[Fa].hide;
     if Fa = FClients
       then FDock := true
       else FDock := false;
   end;

  repeat
    if FDock = true
      then begin

        frm_Hauptform.Caption := 'Projekte';
        frm_Projektsuche.ManualDock(frm_Hauptform.panel1,nil,alclient);
        frm_Projektsuche.show;
      end;
  until FDock = true;


      end;

   except
     on EADSDatabaseError do
       begin
         if MessageDlg(
           'Das Programm ist bereits durch einen anderen Nutzer geöffnet.'
           + #13 +
           'Es kann immer nur ein Nutzer zeitgleich arbeiten.',
           mtWarning, [mbOk], 0) = mrOk then
           begin
             //Close;
           end;
       end;

   end;
end;
In einer anderen kleinen Anwendung hatte ich das Problem schon einmal.
Dort war ich jedoch der einzige Nutzer und habe es mit einer Fehlermeldung abgefangen,
falls ich aus Versehen die Anwendung zweimal gestartet habe.

Ist es grundsätzlich richtig, dass ich mit mehreren Nutzern zugreifen kann?
Derzeit sind es maximal drei.
  Mit Zitat antworten Zitat
mjank

Registriert seit: 5. Dez 2018
12 Beiträge
 
#4

AW: ADS_LOCAL Zugriff mehrer Nutzer

  Alt 13. Dez 2018, 18:04
Wenn ich EADSDatabaseError nicht abfange, kommt folgende Meldung:

Zitat:
DB_Projekte: Error 5035: The requested lock could not be granted.
The file or record may be locked by another user.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#5

AW: ADS_LOCAL Zugriff mehrer Nutzer

  Alt 13. Dez 2018, 18:13
Wenn ich EADSDatabaseError nicht abfange, kommt folgende Meldung:

Zitat:
DB_Projekte: Error 5035: The requested lock could not be granted.
The file or record may be locked by another user.
Das meinte ich mit etwas mehr Information ... Du versuchst, einen Datensatz zu sperren/editieren, welcher schon von einem anderen Benutzer gesperrt/editiert ist.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
mjank

Registriert seit: 5. Dez 2018
12 Beiträge
 
#6

AW: ADS_LOCAL Zugriff mehrer Nutzer

  Alt 13. Dez 2018, 18:15
In der Mitte meines Codes habe ich die Tabelle mit DB_Projekte.edit;
schon in den Bearbeitungsmodus gesetzt.
Das ist an dieser Stelle (sofort nach Programmstart) noch nicht nötig!
Schlamperei!

Wenn ich das Edit auskommentiere, scheint es zu gehen.
  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 02:31 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