Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Unterschied Access97--> Access2000 (https://www.delphipraxis.net/145516-unterschied-access97-access2000.html)

aiko07 3. Jan 2010 15:43

Datenbank: Access • Version: 97 +2000 • Zugriff über: Ado-Connection->AddoTable-> DataSource

Unterschied Access97--> Access2000
 
Hallo Forumsmitglieder,
vorab wuensche ich Allen ein angenehmes neues Jahr 2010.
ich beschäftige mich aus Hobby mit dem Thema Delphi (2009) und nun auch mit Datenbank, speziell Access.

Ich greife auf eine Mdb-Datenbank mit 9 Tabellen über Ado-Komp. zu. (Ado-Connection->AddoTable-> DataSource).Die AdoTable-Comp. habe ich mit einer Tabelle mit folgenden Feldern verbunden: Feld1: Text, Feld2: Text; Feld3: LongInt als Autowert (PrimaerKey); Feld4: Ja/Nein, Feld5: Ja/Nein, Feld6: Zahl(longInt). Ich habe die Datenbank im ori. im Format 97 vorliegen und anschliessend ueber Access in das Format 2000 konvertiert. Ich habe der Addotable-Comp. die Felder der Tabelle ueber die "Fields-Eigenschaft" zugewiesen.

Ich möchte auf beide,97 +2000 Access-Formate, zugreifen. Für die ersten Tests weise ich den Connection-String direct der Ado-Connection-Comp zu.

Zur Datensteuerung verwende ich eine eine DB-Grid und ein DBNavigator.

Der erste Test erfolgte auf die Access2000-Format-Datenbank.
Ich lege ueber das DBNavigator einen neuen Datensatz an und trage im Feld2 einen String ein. Anschliessend ueber Post wird der Datensatz in die Tabelle einegefuegt. Alles OK, keine Fehler, wichtig, der Autowert in Feld3 wird inkrementiert.

Anschliesssend der gleiche Test mit der Acceess 97 Version. Verbindung OK, alle vorhandenen Daten werden im Grid dargestellt. Ich fuege einen neuen Datensatz ein, OK, leeres Record wird dargestellt. Ich fuege einen String im Feld2 ein, OK. Ich schliesse den Befehl mit "Post" ueber DBNavigator ab, OK, aber das Feld3 (Autowert) wird nicht inkrementiert, ist leer. Ueber den Nav-Button "Actualisieren" versuche ich die Tabelle zu actualisieren, es wird folgende Debugger-Exeption ausgeloest.
"Der Schluesselwert fuer die Zeile wurde in der Datenquelle geaendert oder geloescht. Die lokale Zeile ist nun geloescht."

Ist mir schon klar, nur warum wird der Autowert nicht inkrementiert?

//---->
Connection-String Access97
(Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;User ID=Admin;Data Source=C:\Temp\test\Database.mdb;Mode=Share Deny None;Extended Properties=";COUNTRY=0;CP=1252;LANGID=0x0409";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Global Partial Bulk Ops=2

Connection-String Access2000
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Temp\test\Database_2.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
//<---


Vielen dank fuer Eure Rueckmeldung.

Viele Gruesse,

Bernd

Bernhard Geyer 3. Jan 2010 15:47

Re: Unterschied Access97--> Access2000
 
Wieso noch überhaupt Access'97. Die Anzahl der PC's die nur Access 97 und nicht Access-2000/XP/2003/2007-Format können dürfte im minimalen Promille-Bereich liegen. Wieso also sich noch selbst Stress mit sowas machen und für solche Uralt-DB-Formate versuchen Implementierungsunterschiede heraus zu finden. Vermutlich ist das Access-97-DB-Format nicht mit den aktuelle OLE-DB-Versionen und JET-Versionen kompatible (bzw. MS hat hier eine bugs in der Emuliation der alten Version).

aiko07 3. Jan 2010 18:38

Re: Unterschied Access97--> Access2000
 
//Wieso noch überhaupt Access'97//-->

Es gibt in der Industrie immer noch Systeme, die auf Access97 Datenbank, als lokales Speichermedium setzen/nutzen. Warum, keine Ahnung? (Kosten, Lizenzen??)
Es geht mir nicht darum eine neue Datenbank/System zu erstellen.

Gegeben ist, dass ich diese Konstellation habe und ich gerne das Problem loesen moechte.

Ich weiss nicht so recht, wo ich da nun ansetzen soll. Ein Wink in die richtige Richtung, da fuer waehre ich sehr dankbar.

Viele Gruesse,

Bernd

hoika 4. Jan 2010 10:02

Re: Unterschied Access97--> Access2000
 
Hallo,

vielleicht hilft dir das
1

Lösung:
Weg von Access97 (steht im Link)


Man könnte auch sagen, Bug, aber sowas gibt es bei MS nicht ;)

Update

http://support.microsoft.com/kb/190370/EN-US/

Viell. hilft ja die Umstellung der CursorLocation auf clUseServer
(wie das geht, sagt die Google).


Heiko

Bernhard Geyer 4. Jan 2010 15:54

Re: Unterschied Access97--> Access2000
 
Zitat:

Zitat von hoika
Viell. hilft ja die Umstellung der CursorLocation auf clUseServer
(wie das geht, sagt die Google).

Bei Access sollte man eh immer clUseServer verwenden. Da Access keine richtiges DBMS ist und alles im gleichen Adressraum abläuft ist die Verwendung von cluseClient eh nur ein Bit-Geschupse im Speicher ohne die Vorteile bei einem richtigen DBMS zu bekommen.

aiko07 5. Jan 2010 13:24

Re: Unterschied Access97--> Access2000
 
Hallo,

vielen Dank fuer den Link auf die Microsoftseite. Es wird dort ja der Bug, bzw. Unterschied zur 2000 Ver. beschrieben.
Ich habe in meiner Testapplication den CurserTyp auf "clUserServer" gestellt, anschliessend war das Problem mit dem AutoInc-Feld behoben.

Vielen Dank fuer Eure Untestuetzung,

Bernd


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 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