AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Daten einfügen, bei zwei Tabellen
Thema durchsuchen
Ansicht
Themen-Optionen

Daten einfügen, bei zwei Tabellen

Ein Thema von abi · begonnen am 7. Jun 2004 · letzter Beitrag vom 7. Jun 2004
Antwort Antwort
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#1

Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 12:17
Hallo
da ich noch ziemlich neu bin, hab ich keine Ahnung. Des halb hoffe ich das ihr mir helfen könnt.

Ich habe zwei Tabellen.
Die 1.
Nummer (Primary key)
Name (String)
Ort (Integer)

Die 2
Nummer (Primary Key)
OrtNr (Integer)
Ort (String)

Wenn ich jetzt einen neue Daten einfügen will, geht das ja wunderbar. Aber leider muss ich wenn ich einen neuen Ort habe immer die Nummer dazu eingeben.

Kann man des so machen, das er falls der Ort schon vorhanden ist, diesen Übernimmt und wenn nicht denn neuen Ort einfach einfügt.

Mache ich des am besten mit Table oder Query Komponente.

abi
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 12:53
Zitat von abi:
Ich habe zwei Tabellen.
Die 1.
Nummer (Primary key)
Name (String)
Ort (Integer)

Die 2
Nummer (Primary Key)
OrtNr (Integer)
Ort (String)

Wenn ich jetzt einen neue Daten einfügen will, geht das ja wunderbar. Aber leider muss ich wenn ich einen neuen Ort habe immer die Nummer dazu eingeben.

Kann man des so machen, das er falls der Ort schon vorhanden ist, diesen Übernimmt und wenn nicht denn neuen Ort einfach einfügt.
Ich denke nicht, dass es sinnvoll ist, die Normalisierung von Datenbank so weit zu treiben,
den Ort getrennt vom Rest zu speichern.
Aber trotzdem hier mal die Vorgehensweise. Nimm eine Query mit folgender SQL-Anweisung
SELECT * FROM Tabelle2 WHERE Ort=:Ort
Delphi-Quellcode:
QryOrte.Close;
QryOrte.Params.ParamByName['Ort'] := aktuellerOrt;
QryOrte.Open;
if QryOrte.IsEmpty then
begin
   // aktueller Ort nicht gefunden, also einfügen
   QryOrte.Append;
   QryOrte['OrtNr'] := ...
   QryOrte['ort'] := aktuellerOrt;
   QryOrte.Post;
end
else
   // Ort gefunden, also Feld OrtNr auslesen
   aktuelleOrtNr := QryOrte['OrtNr'];
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 13:11
Zitat von "shmia[code=delphi:
if QryOrte.IsEmpty then
begin
// aktueller Ort nicht gefunden, also einfügen
QryOrte.Append;
QryOrte['OrtNr'] := ...
QryOrte['ort'] := aktuellerOrt;
QryOrte.Post;
end[/code]
Der Ansatz stimmt sicherlich, nur muss man sich noch überlegen was man für ... einsetzt. Arbeitet man mit AutoInc Felder für den Primärschküssel, ist es sehr DBS abhängig, wie man die den neu eingefügten Wert auslesen kann. Denn den Wert von OrtNr brauchst du auf jeden Fall, da ja die 2. Tabelle mit dem Fremdschlüssel auf diese Nr referenziert.

Gruß,
Tom
  Mit Zitat antworten Zitat
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#4

Re: Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 13:24
Hallo shmia
warum denkst du das die nicht sinnvoll ist, hab mir gedacht. Wenn man denn Wert meistens hat ist es doch einfacher schon einen vorhanden zunehmen und nicht noch mal in die andere Tabelle zugehen um diesen dort einzufügen.

Denn Code probiere ich gleich mal aus, schon mal danke.

abi
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
Kasoft

Registriert seit: 5. Mai 2004
Ort: Filderstadt
111 Beiträge
 
Delphi 7 Professional
 
#5

Re: Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 14:46
Hallo Abi,

Soweit ich Shmia verstanden habe meint er das du Ortsdaten und die Personendaten in eine
Tabelle schreiben kannst. Das kann richtig sein aber für manche Fälle ist es Sinnvoll
auch den Ort in eine Tabelle zu setzen.

Sag uns doch einfach mal wie es so ca aussehen soll bei dir. Ist es nötig 2 Tabellen zu
machen?

und noch einen Vorschlag meinerseits:

Die Tabelle wo die Ortsdaten drin sind einfach OrtNr rausmachen. Dein Primary Key
reicht völlig aus um eine Master/ Detail Beziehung herzustellen.
Abhängig von den Komponenten die verwendest kannst du beide Tabellen verknüpfen.
Dazu würd ich dir das Einsteiger Datenbanktutorial von Delphi-source.de empfehlen.

MfG
Kasoft
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 14:59
Zitat von abi:
Hallo shmia
warum denkst du das die nicht sinnvoll ist, hab mir gedacht.
Wenn nur deutsche Adressen verarbeitet werden, könnte eine Hilfstabelle mit allen Postleitzahlen
und Ortsnamen von Deutschland mehr bringen.
Das PLZ-Feld und das Ortsfeld werden dann als Lookup-Combobox ausgeführt. Wenn der Benutzer die
Combobox aufmacht kann er eine PLZ auswählen und bekommt den Ort gleich eingetragen.
Dennoch darf er den Ortnamen von Hand abändern (z.B. um einen Ortsteil anzufügen).
Bei Bedarf kann ich hier eine Access-Datenbank mit allen 41113 deutschen PLZ&Orten posten. (gezipped ~ 1MB)
Andreas
  Mit Zitat antworten Zitat
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#7

Re: Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 15:28
Hallo
des hab ich auch so verstanden.

Ich soll eine Datenbank machen für Drehgeber, hab des jetzt nur als Beispiel genommen. Da diese Datenbank sehr klein ist und ich sie noch überschauen kann.

In meiner Datenbank gibt es 22 Positionen.
Habe dabei mir vier weitere Tabellen gemacht.

Meine Haupttable sieht so aus.

GeberDatenbank:
Bezeichung
Device Name
HW-Version
SW-Version
Auflösung
Preset Wert
usw.

für HW-Version
und SW-Version habe ich eine extra Tabelle gemacht.

Ist des jetzt Sinnvoll oder nicht . Hab des bisher so verstanden wenn man eine Datenbank hat die 200 Elemente hat und bei ein Feld wie z.B. HW-Version das im Grunde nur 5 bis 10 Elemente braucht ist es besser wenn man diese auslagert. Denn ganau dies ist hier der Fall.

Hab des jetzt die ganze Zeit mit Tables gemacht. Damit komme ich auch schon klar. Denke ich jedenfalls.

Wenn ich jetzt neue Daten eintragen will. Dann habe ich für meine weiteren Tabellen eine ComboBox.
Somit kann man diese Felder schneller auswählen. Aber wenn jetzt in der ComboBox nicht das drin ist was man braucht. Dann muss man dies erst extra in dieser Table ändern, dann ist es in der ComboBox verfügbar.

Soweit bin ich jetzt.

Jetzt habe ich mir gedacht vielleicht ist es nicht schlecht. Wenn man alle Werte eintippen kann ohne sie auszuwählen, nicht das man immer nur von Table zu Table springen muss. Wenn man dies aber macht kann es ja sein das man ein Wert doppelt bekommt. Dies wollte ich vermeiden in dem ich prüfe ob dieser schon vorhanden ist.

Da ich nur Datenbank als anwender kenne, kann ich leider nicht sagen was besser ist. Deshalb würde ich gerne beide Version ausprobieren. Vielleicht kann man auch beide Kombinieren.

Hab gerade auch gemerkt das ich Ortnr nicht brauch.

Wie ich dies genau mache weiss ich leider noch nicht.

Tutor werde ich mir durch lesen.

Danke

abi
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#8

Re: Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 15:34
Hallo shmia
danke schon mal für das angebot. Hab gedacht damit verstehe ich es besser als mit meiner Datenbank.

Die ist mir igendwie zu groß.

Hoffe das meine letzter Beitrag mehr licht in die Sache gebracht hat.

Was würde ich ohne euch nur machen.

abi
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
Kasoft

Registriert seit: 5. Mai 2004
Ort: Filderstadt
111 Beiträge
 
Delphi 7 Professional
 
#9

Re: Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 15:36
Hallo Abi,

Hier hast du nochmal nen Link zu dem Tutorial indem es um Relationen in
Tabellen geht.
Tutorial Datenbank
Ich versteh ansonsten das Problem nicht. Was ist ein Drehgeber????

MfG
Kasoft
  Mit Zitat antworten Zitat
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#10

Re: Daten einfügen, bei zwei Tabellen

  Alt 7. Jun 2004, 15:44
Hallo Kasoft
sorry, hab ich nicht mehr dran gedacht.

Was ist ein Drehgeber.
Ich kanns zwar nicht besonders gut aber ich versuchs.

Man hat eine Welle diese dreht sich. Auf dieser Welle ist eine Codierscheibe, da stehen im binärCode Zahle drauf. Also eine Scheibe auf der z.B. 1,2,3,4 usw. drauf steht. Diese kann der Drehgeber lesen. Damit kann er ganau sagen auf welcher Position er sich befindet.

Jetzt braucht man z.B. nicht jeden Schritt sondern es reicht wenn man nur die geraden Zahle zählt. Dies kann man mit der Aufösung ändern.

z.B. bei einem Robotor. Dieser darf immer nur ganz bestimmte Position anfahren. Um dies zu überprüfen braucht man einen Drehgeber.

Ich hoffe du weisst was ich meine.

Ich werde jetzt Feierabend machen, denn irgendwie. Brauch ne Pause.

Werde mich aber morgen wieder melden.

Mercy nochmal.

abi
Wer nicht fragt, bleibt dumm.
  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 15:12 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