Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Import aus Access plus ID > GUID (https://www.delphipraxis.net/62653-import-aus-access-plus-id-guid.html)

marabu 7. Mär 2006 06:47

Re: Import aus Access plus ID > GUID
 
Hallo Manfred,

ich kenne die FibPlus-Komponenten nur vom Hören-Sagen. Dein DB-Schema mit ID CHAR(38) deutet daraufhin, dass diese Komponenten einen GUID genauso gut oder schlecht verarbeiten, wie andere auch. Grundsätzlich ist es richtig, dass GUID-Felder das Arbeiten mit global verteilten Datenbanken unterstützen. Der von dir erwähnte Abgleich der Daten über das Internet mag als Offline-Betrieb einer horizontal verteilten Datenbank gelten. Ein GUID-Feld ist dafür allerdings nicht zwingend erforderlich, du brauchst ja keine weltweit eindeutigen Schlüssel - anwendungsweit würde ja schon genügen. Ich würde eher mit einer Identität aus der problem domain arbeiten (Versicherungsnummer, Personalnummer, etc.). Immerhin muss ja beim Abgleich der Mensch identifiziert werden und nicht der Datensatz.

Aber da hängt vieles von Feinheiten ab. Eine zentral gepflegte Datenbank, deren Tupel regional verteilt werden, lokal aber nur gelesen werden, braucht zum Beispiel keinen GUID als Schlüssel. Und bei kleinen Datenmengen würde man auch keinen Abgleich fahren, sondern die lokalen Daten komplett ersetzen. Wenn du also abgleichen willst, dann scheinen die Daten lokal auch gepflegt zu werden. Dabei kommt es wieder darauf an, ob nur UPDATE zulässig ist oder auch INSERT und DELETE. Das Thema ist extrem komplex. Ich fürchte wir werden es hier nicht erschöpfend behandeln können.

Lass dich von mir nicht irritieren. Ob GUID oder GEN_ID - mit einem primary key machst du schonmal nichts falsch. Die Tupelzahlen dürften bei dir klein bleiben, so dass der space-time overhead durch einen PK mit CHAR(38) nie ins Gewicht fällt.

Viel Erfolg mit deinem Projekt.

marabu

PS: Vergesse den Datenschutz bei personenbezogenen Daten nicht.

manfred_h 7. Mär 2006 09:02

Re: Import aus Access plus ID > GUID
 
Zitat:

Zitat von Sharky
Hai Manfred,

hier mal eine kurzes Beispiel wie ich es bei zwei Tabellen machen würde. Hierbei ist in Tabelle2 das Feld tabelle1_id der ForenKey auf die ID von Tabelle1.

Besten dank für deinen Tipp werde es gleich ausprobieren. :P


Zitat:

Zitat von marabu
Lass dich von mir nicht irritieren. Ob GUID oder GEN_ID - mit einem primary key machst du schonmal nichts falsch. Die Tupelzahlen dürften bei dir klein bleiben, so dass der space-time overhead durch einen PK mit CHAR(38) nie ins Gewicht fällt.

PS: Vergesse den Datenschutz bei personenbezogenen Daten nicht.

Besten dank auch Dir marabu für diene Überlegungen.
Die erste DB die ich für dieses rojekt erstellt habe war leider ein wenig Unterdimensioniert daher möchte ich
diesen Fehler nicht zweimal machen.
Die DB Anwendung unterstüzt auch schon mehrere Sprachen ( in der Schweiz haben wir ja schon 3 / eigentlich 4 )).
Wenn der bedarf und die akzeptanz für die Anwendung dann steigen würde ( mehrere Länder ) dann möchte ich nicht
feststellen dass ich wieder zu "klein" gedacht habe.

Loklal müssen wirklich Daten eingegeben und gelöscht werden können. Das wird dann auch noch Arbeit geben...
Es werden schon zur Einschränkung der Datenmenge auf den einzelnen Punkten ( ist dass die Tupelzahlen ? )
eine Gruppennummer und eine Usernummer verwendet.

Der Datenschutz ist dann auch noch eine grosses Anliegen. Der einzelne User darf ja nur das erhalten wozu auch
seine Rechte ausreichen. ( Daten von Basel und nicht auch noch von Genf )

:thumb: Besten dank für Deine / Eure Bemühungen :!: :thumb:
Manfred

Sharky 8. Mär 2006 06:49

Re: Import aus Access plus ID > GUID
 
Zitat:

Zitat von Sharky
Hai Manfred,

hier mal eine kurzes Beispiel wie ich es bei zwei Tabellen machen würde. Hierbei ist in Tabelle2 das Feld tabelle1_id der ForenKey auf die ID von Tabelle1.
Delphi-Quellcode:
uses
  ActiveX, ComObj;

function Neue_GuID: String;
var
  guidWork: TGUID;
begin
  CoCreateGuid(guidWork);
  Result := GUIDToString(guidWork);
end;

procedure Tib.Button1Click(Sender: TObject);
var
  oldID: string;
  newID: string;
begin
  Query2.Close;
  Query2.SQL.Text := 'UPDATE tabelle2 SET tabelle1_id = :newID WHERE id = :oldID';
  Query2.ParamCheck := True;

  Query1.Close;
  Query1.SQL.Text := 'SELECT id FROM tabelle1';
  Query1.Open;
  while not (Query1.Eof) do
  begin
    newID := Neue_GuID;
    oldID := Query1.FieldByName('id').AsString;
    Query1.Edit;
    Query1.FieldByName('id').AsString := newID;
    Query1.Post;
    Query2.ParamByName('newID').AsString := newID;
    Query2.ParamByName('oldID').AsString := oldID;
    Query2.ExecSQL;
    Query1.Next;
  end;
end;

EDIT!! Ich hatte das .Post für Query1 vergessen :oops:

manfred_h 8. Mär 2006 09:43

Re: Import aus Access plus ID > GUID
 
Zitat:

Zitat von Sharky
Ich hatte das .Post für Query1 vergessen :oops:

Hallo Sharky

besten dank für deine Hilfe.
bin scon seit gestern ( nicht nonstop ) am rumexperimentieren. :oops:

Dein Code ist sicherlich Richtig.
Mein Problem ist nur noch bei der Umsetzung in Fibplus.

Aber ich mach hier besser einen neues Thema auf.
FIBPlus Komponenten Problem

Besten dank für Deine Hilfe und auch Dir marabu.
Ihr habt mir wirklich eine grose Hilfe. :thumb:
Manfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr.
Seite 2 von 2     12   

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