Zu erreichen, Datensatzsperrung mit Access 2000


Wie kann ich realisieren, Datensatzsperrung auf einer Access 2000-Datenbank mithilfe von Delphi?
Haben Sie dies auf der Borland-Support gesehen?
Bereich: Database\ado
Referenznummer: 74076
Status: geöffnet
Datum gemeldet: 03.11.99
Schweregrad: Häufigsten vorkommenden
Typ: Grundfunktionen Scheitern
Problem:
Derzeit funktioniert pessimistische Datensatzsperrung nicht
mit den ADO-Komponenten da ADO nicht
bieten die Möglichkeit, einen Datensatz zu sperren, anders als die
aktuellen Datensatz.
Nun gibt es eine Möglichkeit zum Sperren von Datensätzen auf MSAccess 2000 Tabellen.
Zunächst erfordert es, dass Sie die Entwickler-Edition von
Microsoft Ado Data Control 6.0 (kommt mit Visual Studio-Programme).
Wenn Sie haben, dann importieren nach Delphi mit dem Import-ActiveX
Menüpunkt im Menü Komponente. Sie werden sehen, dass das ActiveX hat
als Adodc wurden in der ActiveX-Palette hinzugefügt.
Erstellen Sie ein Formular und setzen Sie so viele Adodc-Komponenten drauf wie Sie benötigen
simultane Sperren. Denken Sie daran: ein Adodc kann einen Datensatz in einer Tabelle sperren
zu einer Zeit. Wenn Sie mehrere Datensätze in mehreren Tabellen sperren müssen, so werden Sie
benötigen Sie mehrere Adodc-Komponenten (Sie haben auch die Wahl der dynamischen Erstellung).
Anschließend erstellen Sie eine neue Tabelle in den Access-MDB und den Namen sagen 'Sperren' können. Bringe zwei
Felder in es ('lockId-Wert entsprechen' Typ String und 'FldEdt' Typ Integer).
Im folgenden werden zwei Funktionen. Eine Sperre, die Sie, um verwenden können so genannte
den Datensatz gesperrt, oder prüfen Sie, ob es gesperrt ist. Die andere heißt Unlock
und Sie können es verwenden, um den Datensatz zu entriegeln.
Funktion-Sperre (Ds:TAdoConnection; LckTable:TAdodc; const S:string;
REC, CurrentUserId:longint): boolean;
var
FND:Boolean;
S1:String;
beginnen
S1:=Format(s,[Trim(IntToStr(REC))]);
LckTable.ConnectionString:=ds. ConnectionString;
LckTable.CursorLocation:=2;
LckTable.LockType:=2;
LckTable.CommandType:=2 aus;
LckTable.RecordSource='Lock';
FND: = False;
Versuchen Sie
LckTable.refresh;
Wenn LckTable.Recordset.RecordCount > 0 dann
beginnen
LckTable.Recordset.MoveFirst;
LckTable.Recordset.Find (' lockId-Wert entsprechen ='' ' + s1 +'' ', 0,1,1);
Ende;

Wenn LckTable.Recordset.RecordCount > 0 dann
Wenn nicht (LckTable.Recordset.EOF)
Wenn LckTable.Recordset.Fields['lockid'].value=s1 dann
FND: = True;
Wenn nicht dann fnd
LckTable.Recordset.AddNew('lockid',s1);
LckTable.Recordset.Fields['fldEdt']. Wert: = CurrentUserId;
Ergebnis: = True;
mit Ausnahme von
Ergebnis: = False;
Ende;
Ende;
Unlock-Funktion (const S:string; Rec: Longint; LckTable:TAdodc): boolean;
var
S1:String;
beginnen
S1:=Format(s,[Trim(IntToStr(REC))]);
versuchen Sie
LckTable.Recordset.Cancel;
LckTable.Recordset.Find (' lockId-Wert entsprechen ='' ' + s1 +'' ', 0,1,0);
LckTable.Recordset.Delete(1);
Ergebnis: = True;
mit Ausnahme von
Ergebnis: = False;
Ende;
Jetzt haben Sie einige Codierung innerhalb des Projekts zu tun.
Wenn läßt sagen, ein Benutzer anfordert, öffnen Sie einen Datensatz (können mit der eindeutigen Id 12 sagen)
aus der Customer-Tabelle. Sie haben ein Tadodc, das heißt LckCustomers und ist
befindet sich auf dem Formular mit dem Namen LckForm. Verwenden Sie diesen Code:
Wenn Lock(TCustomer.Connection,lckForm.lckCustomers,'Customers',12,1) dann
beginnen
der Datensatz wurde erfolgreich gesperrt und Sie können gehen mit Ihrer
Bearbeiten von code
// ...
Ende
sonst
beginnen
Ther-Datensatz wurde bereits von einem anderen Benutzer gesperrt.
Geben Sie eine Nachricht und die Bearbeitung abbrechen oder nur lesen Sie weiter.
// ...
Ende;
Jetzt wollen Sie den Datensatz zu entsperren, nach der die Bearbeitung nur rufen:
Unlock('Customers',12,lckForm.lckCustomers);
Warnung: Die Sperrtabelle ruft sehr groß so dass, wenn der erste Benutzer anmeldet
Das Programm, leere die Sperrtabelle mithilfe einer Abfrage wie '' aus Lock löschen.
Sie können überprüfen, ob der erste Benutzer werden, indem überprüft das Vorhandensein einer ldb
Neben der Mdb-Datei-Datei. Wenn es nicht vorhanden ist, sind Sie die ersten.
Das war's. Viel Glück.









Zu erreichen, Datensatzsperrung mit Access 2000


Zu erreichen, Datensatzsperrung mit Access 2000 : Mehreren tausend Tipps, um Ihr Leben einfacher machen.


Wie kann ich realisieren, Datensatzsperrung auf einer Access 2000-Datenbank mithilfe von Delphi?
Haben Sie dies auf der Borland-Support gesehen?
Bereich: Database\ado
Referenznummer: 74076
Status: geöffnet
Datum gemeldet: 03.11.99
Schweregrad: Häufigsten vorkommenden
Typ: Grundfunktionen Scheitern
Problem:
Derzeit funktioniert pessimistische Datensatzsperrung nicht
mit den ADO-Komponenten da ADO nicht
bieten die Möglichkeit, einen Datensatz zu sperren, anders als die
aktuellen Datensatz.
Nun gibt es eine Möglichkeit zum Sperren von Datensätzen auf MSAccess 2000 Tabellen.
Zunächst erfordert es, dass Sie die Entwickler-Edition von
Microsoft Ado Data Control 6.0 (kommt mit Visual Studio-Programme).
Wenn Sie haben, dann importieren nach Delphi mit dem Import-ActiveX
Menüpunkt im Menü Komponente. Sie werden sehen, dass das ActiveX hat
als Adodc wurden in der ActiveX-Palette hinzugefügt.
Erstellen Sie ein Formular und setzen Sie so viele Adodc-Komponenten drauf wie Sie benötigen
simultane Sperren. Denken Sie daran: ein Adodc kann einen Datensatz in einer Tabelle sperren
zu einer Zeit. Wenn Sie mehrere Datensätze in mehreren Tabellen sperren müssen, so werden Sie
benötigen Sie mehrere Adodc-Komponenten (Sie haben auch die Wahl der dynamischen Erstellung).
Anschließend erstellen Sie eine neue Tabelle in den Access-MDB und den Namen sagen 'Sperren' können. Bringe zwei
Felder in es ('lockId-Wert entsprechen' Typ String und 'FldEdt' Typ Integer).
Im folgenden werden zwei Funktionen. Eine Sperre, die Sie, um verwenden können so genannte
den Datensatz gesperrt, oder prüfen Sie, ob es gesperrt ist. Die andere heißt Unlock
und Sie können es verwenden, um den Datensatz zu entriegeln.
Funktion-Sperre (Ds:TAdoConnection; LckTable:TAdodc; const S:string;
REC, CurrentUserId:longint): boolean;
var
FND:Boolean;
S1:String;
beginnen
S1:=Format(s,[Trim(IntToStr(REC))]);
LckTable.ConnectionString:=ds. ConnectionString;
LckTable.CursorLocation:=2;
LckTable.LockType:=2;
LckTable.CommandType:=2 aus;
LckTable.RecordSource='Lock';
FND: = False;
Versuchen Sie
LckTable.refresh;
Wenn LckTable.Recordset.RecordCount > 0 dann
beginnen
LckTable.Recordset.MoveFirst;
LckTable.Recordset.Find (' lockId-Wert entsprechen ='' ' + s1 +'' ', 0,1,1);
Ende;

Wenn LckTable.Recordset.RecordCount > 0 dann
Wenn nicht (LckTable.Recordset.EOF)
Wenn LckTable.Recordset.Fields['lockid'].value=s1 dann
FND: = True;
Wenn nicht dann fnd
LckTable.Recordset.AddNew('lockid',s1);
LckTable.Recordset.Fields['fldEdt']. Wert: = CurrentUserId;
Ergebnis: = True;
mit Ausnahme von
Ergebnis: = False;
Ende;
Ende;
Unlock-Funktion (const S:string; Rec: Longint; LckTable:TAdodc): boolean;
var
S1:String;
beginnen
S1:=Format(s,[Trim(IntToStr(REC))]);
versuchen Sie
LckTable.Recordset.Cancel;
LckTable.Recordset.Find (' lockId-Wert entsprechen ='' ' + s1 +'' ', 0,1,0);
LckTable.Recordset.Delete(1);
Ergebnis: = True;
mit Ausnahme von
Ergebnis: = False;
Ende;
Jetzt haben Sie einige Codierung innerhalb des Projekts zu tun.
Wenn läßt sagen, ein Benutzer anfordert, öffnen Sie einen Datensatz (können mit der eindeutigen Id 12 sagen)
aus der Customer-Tabelle. Sie haben ein Tadodc, das heißt LckCustomers und ist
befindet sich auf dem Formular mit dem Namen LckForm. Verwenden Sie diesen Code:
Wenn Lock(TCustomer.Connection,lckForm.lckCustomers,'Customers',12,1) dann
beginnen
der Datensatz wurde erfolgreich gesperrt und Sie können gehen mit Ihrer
Bearbeiten von code
// ...
Ende
sonst
beginnen
Ther-Datensatz wurde bereits von einem anderen Benutzer gesperrt.
Geben Sie eine Nachricht und die Bearbeitung abbrechen oder nur lesen Sie weiter.
// ...
Ende;
Jetzt wollen Sie den Datensatz zu entsperren, nach der die Bearbeitung nur rufen:
Unlock('Customers',12,lckForm.lckCustomers);
Warnung: Die Sperrtabelle ruft sehr groß so dass, wenn der erste Benutzer anmeldet
Das Programm, leere die Sperrtabelle mithilfe einer Abfrage wie '' aus Lock löschen.
Sie können überprüfen, ob der erste Benutzer werden, indem überprüft das Vorhandensein einer ldb
Neben der Mdb-Datei-Datei. Wenn es nicht vorhanden ist, sind Sie die ersten.
Das war's. Viel Glück.


Zu erreichen, Datensatzsperrung mit Access 2000

Zu erreichen, Datensatzsperrung mit Access 2000 : Mehreren tausend Tipps, um Ihr Leben einfacher machen.
Zu erreichen, Datensatzsperrung mit Access 2000
Wiezutun
Freunden empfehlen
  • gplus
  • pinterest

Kommentar

Einen Kommentar hinterlassen

Wertung