Entwickler-Ecke

Datenbanken - 3 Fragen zu ADO und Access und Install


m-werk - Mi 03.07.02 22:12
Titel: 3 Fragen zu ADO und Access und Install
Hallo Leute, ich habe noch 3 Fragen:

1. Ich habe ein Verzeichnis in der Registry stehen (wird mit setup erstellt), und möchte nun, dass von der connectionString dieser Ordner hergenommen wird, wie er in der Registry steht, damit die Datenbank funktioniert.

2. Ich habe in meiner Access-DB als Primärschlüssel und auch als AutoWert den Namen KundenNr. Nun ist es doch so, dass wenn ein Datensatz gelöscht wird, die vortlaufende nummer aber bestehen bleibt. Kann man das auch löschen? wenn ja, wie?

3. Welche Systemdaten brauche ich noch für mein Setupprogramm für die Access-DB. Verknüpft ist diese mit Microsoft Jet OLEDB 4.0

Könnt ihr mir noch bei diesen 3 Fragen helfen?


BlackOrpheus - Do 04.07.02 12:14

Moin!

zu 1.
Ich würde im OnCreate des Formulars mit der ADO Connection den Wert wie folgt auslesen und dann zuweisen.

Beispiel aus der Delphi Hilfe:
"Im folgenden Beispiel wird ein Wert aus einem Registrierungseintrag abgerufen.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
uses Registry; 
function GetRegistryValue: string;

var
  Registry: TRegistry;
  S: string;
begin
  Registry:=TRegistry.Create;

  Registry.RootKey:=HKEY_LOCAL_MACHINE;
  {False, weil der Eintrag nicht erstellt werden soll, }
  {wenn er nicht vorhanden ist }
  Registry.OpenKey('MYKEY',False); 
  Result :=Registry.ReadString('VALUE1');

  Registry.Free;
end;"

zu 2.
es sollte eigentlich nicht ohne weiteres möglich sein (ich hab noch nicht mit Access gearbeitet) da das Feld auch noch ein PrimaryKey ist würden durch eine änderung des AutoIncWert evtl Referenzen zu anderen datensätzen verloren gehen.

zu 3.
keine Ahnung. Sorry!

Code-Tags hinzugefügt. Tino


Renegade - Fr 05.07.02 09:17

zu 2.

Du solltes unbedingt ein neues Feld für den PrimaryKey (als AutoWert) erstellen (z.B. lfdNr, JundenID oder so). Dieser kann dann eigenständig von der Datenbank gehändelt und für Verknüpfungen / Beziehungen verwendet werde. Für Deine Kunden-Nummer solltest Du einfach ein Integer-Feld benutzen. Dann hast Du 100% einfluss darauf.

Zum Thema Indizes:
Access-DB sind dafür bekannt, daß sie sich im laufe der Zeit extrem "aufblähen". Du solltes Dich also zum Thema Reorganisation schlau machen.

Hoffe das hilft Dir weiter.


m-werk - Fr 05.07.02 09:36

Hi, das mit der ID ist mir schon klar, aber die ID, oder lfd, laufendeNR, die möchte ich auch gelöscht aben!


Renegade - Do 11.07.02 16:43

Also wenn Du den Datensatz löscht, dann verschwindet auch der Indexwert. :)
Wenn Du meinst, daß der Index nicht mehr fortlaufend ist (1,2,6,7..) und Du dieses korrigieren möchtest, dann weiß ich dafür keine Möglichkeit. :cry: Der Index soll ja eindeutig sein.

Hoffe das hilft Dir weiter - ansonsten weiter posten