Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   In zwei DB suchen, vergleichen, änder? (https://www.delphipraxis.net/170435-zwei-db-suchen-vergleichen-aender.html)

Alterauge 17. Sep 2012 11:37

Datenbank: MySQL • Version: 5.5 • Zugriff über: MyConnection

In zwei DB suchen, vergleichen, änder?
 
Hallo,

Habe zwei DB ( db1 und db2) !

Die Datenbank 1 besteht aus:
DBEdit1 // Bezeichnung Status
DBEdit2 // Bezeichnung Einsatznummer
Datenbank 2 besteht aus:
DBEdit.3 // Bezeichnung Einsatznummer
DBEdit4 // Bezeichnung Zustand Einsatz

Mein erster Schritt (Vorraussetzung in DB1) gibt es einen Eintrag mit:
DBEdit1.Text ='4' dann
Schritt 2 Vergleich aus DB1 und DB2
DBEdit2.Text = DBEdit3.Text dann
Schritt 3
DBEDit4.Text ='In Bearbeitung' dann

DBEdit4.Text='Am Einsatort'

So das ganze immer wieder als if Anweisung ! Aber wie mache ich das mit dem suchen in der DB
Mit Locate ?
Zum Beispiel beim vergleichen: Schritt 2?

DeddyH 17. Sep 2012 12:24

AW: In zwei DB suchen, vergleichen, änder?
 
Sind das wirklich 2 DBs oder eher 2 Tabellen? Zumindest den letzteren Fall würde ich eher mit einem SQL-Statement behandeln, als das clientseitig lösen zu wollen.

Alterauge 17. Sep 2012 12:51

AW: In zwei DB suchen, vergleichen, änder?
 
Es sind wirklich zwei DB!
Ok, werde mich dann mal mit Query und SQL Befehlen beschäftigen!

Habe noch nie mit einer Query gearbeitet!

Uwe Raabe 17. Sep 2012 12:54

AW: In zwei DB suchen, vergleichen, änder?
 
Zitat:

Zitat von Alterauge (Beitrag 1183276)
Es sind wirklich zwei DB!
Ok, werde mich dann mal mit Query und SQL Befehlen beschäftigen!

Wenn es wirklich zwei Datenbanken und nicht zwei Tabellen in derselben Datenbank sind, wird das nicht viel helfen (zumindest nicht dabei).

jobo 17. Sep 2012 13:31

AW: In zwei DB suchen, vergleichen, änder?
 
Bei mysql kann man doch DB übergreifend abfragen, falls es 2 DB in der gleichen Instance sind...

p80286 17. Sep 2012 16:22

AW: In zwei DB suchen, vergleichen, änder?
 
Das mit den zwei Datenbanken kann ich eigentlich nicht glauben, auf der anderen Seite bei den Fragen, die du in letzter Zeit gestellt hast, ist das durchaus möglich.

Wäre es da nicht an der Zeit sich einmal grundlegende Gedanken über die Datenhaltung und die damit verbundenen Funktionen (Einsatzprotokoll?) zu machen?

Gruß
K-H

Alterauge 17. Sep 2012 18:46

AW: In zwei DB suchen, vergleichen, änder?
 
Hallo,
frage mal ganz vorsichtig!

Wenn ich mich mit der Datenbank A verbinde und DBEdit1 zuweise !
Und jetzt verbinde ich mich mit Datenbank B und weise DBEdit2 zu!

Mache jetzt eine Abfrage:

If (dbedit1.text) = (dbedit2.text) then Beginn

So mache ich doch eine Abfrage aus zwei unterschiedlichen Datenbanken?
Ist der Text aus DB1 gleich Text aus DB2 dann mache ............

Oder ist das so nicht Richtig?

DeddyH 17. Sep 2012 18:57

AW: In zwei DB suchen, vergleichen, änder?
 
Vorsichtige Gegenfrage: weshalb sind das 2 verschiedene DBs? Willst Du konvertieren, oder welcher Sinn steckt dahinter?

Alterauge 17. Sep 2012 20:11

AW: In zwei DB suchen, vergleichen, änder?
 
Eine Datenbank wird vorgegeben, und Daten zur Verfügung gestellt.
Die zweite Datenbank, habe ich selber angelegt!

Jetzt brauche ich, eine art Verknüfung DB1 zu DB2 !

Kopiere mir die Einsatznummer aus DB1 und füge sie in DB2 ein.
Es sind natürlich ausgesuchte Datensätze, die ich jetzt durch die Einsatznummer verknüpfen möchte.

Medium 17. Sep 2012 21:07

AW: In zwei DB suchen, vergleichen, änder?
 
Erstelle dir am besten passende Tabellen in deiner DB und gieße dort die Daten aus der beigestellten hinein. Ab dann lassen sich derartige Krämpfe mit ein wenig SQL in 2-4 Zeilen in Gefallen auflösen. Wenn die gestellte DB "lebt" (also immer wieder neue Daten hinein gehen) muss man eben regelmäßig die eigene nachführen.
So auf die Art, Daten in Controls vergleichen, ist das jedenfalls die gräßlichste Möglichkeit die man so nehmen könnte.

sx2008 18. Sep 2012 06:17

AW: In zwei DB suchen, vergleichen, änder?
 
@Alterauge: ich glaube du bräuchtest erst einmal einen Grundkurs darüber, was eine relationale Datenbank überhaupt ist.
Am Besten kaufst du dir dazu ein Buch oder du kuckst mal auf Datenbanken-Tutorials .

Eine Datenbank besteht hauptsächlich (ich vereinfache hier etwas) aus Tabellen.
Tabellen bestehen aus Feldern und Datensätzen.
Ein TDBEdit hat damit erst einmal nichts zu tun.

Wenn man Daten aus einer Datenbank lesen möchte oder bestehende Daten ändern oder neue Daten einfügen möchte, dann hat das mit Felder und Datensätzen zu tun.
Als Delphi-Programmierer muss man dazu die Klasse TDataset kennen und benützen.
TDataset ist die Basisklasse von TQuery und TTable sowie allen anderen Varianten wie z.B. TAdoTable, TAdoQuery, TIbTable,....
Delphi-Quellcode:
// Beispiel: alle Datensätze einer Tabelle auslesen
Query1.SQL.Text := 'SELECT * FROM Fahrzeug';
Query1.Open; // Datenmenge öffnen
while not Query1.Eof do // solange noch Datensätze da sind
begin
  stringlist.Add(Query1.FieldByName('Name').AsString +
    '  -   ' +
    Query1.FieldByName('Status').AsString);
  Query1.Next; // nächsten Datensatz
end;
Wie man an dem Beispiel sieht, wird direkt auf die Daten zugegriffen (ohne DBEdit!).

DeddyH 18. Sep 2012 07:21

AW: In zwei DB suchen, vergleichen, änder?
 
Sofern DB-übergreifende SQL-Statements wirklich möglich sind, könnte es so klappen(ungetestet):
SQL-Code:
UPDATE
  DB2.Tabelle
SET
  Zustand = 'Am Einsatort'
WHERE
  Einsatznummer IN (
    SELECT
      Einsatznummer
    FROM
      DB1.Tabelle
    WHERE
      Status = 4
  )
AND
  Zustand = 'In Bearbeitung'
Wobei ich eher eine eigene Tabelle "Zustand" einrichten würde, die zumindest aus einem AutoInc-Wert und einem Varchar besteht. Dann würde nicht der Zustand als String eingetragen, sondern nur der zugehörige PK aus dieser Zustandstabelle.

Daniel 18. Sep 2012 07:57

AW: In zwei DB suchen, vergleichen, änder?
 
Alterauge, Dir fehlen grundlegende Kenntnisse, wie DB-Anwendungen funktionieren. Das ist aber nicht schlimm, ging uns allen einst so und es lässt sich abstellen. Es gibt viele Tutorials, zum Beispiel bei DelphiTreff, aber die muss man auch durcharbeiten wollen. Du wirst dabei aber schnell feststellen, dass es gar nicht so schwer ist. Sieh Dir auch die Delphi-Demos FishFacts und BioLife an. Vorher hat das alles hier wenig Sinn, weil Du bestenfalls zu einer Lösung kommen wirst, die zufällig funktioniert, Du aber nicht in der Lage sein wirst, zu beurteilen, warum das so ist.

p80286 18. Sep 2012 10:39

AW: In zwei DB suchen, vergleichen, änder?
 
Zitat:

Zitat von Alterauge (Beitrag 1183354)
Eine Datenbank wird vorgegeben, und Daten zur Verfügung gestellt.
Die zweite Datenbank, habe ich selber angelegt!

Jetzt brauche ich, eine art Verknüfung DB1 zu DB2 !

Kopiere mir die Einsatznummer aus DB1 und füge sie in DB2 ein.
Es sind natürlich ausgesuchte Datensätze, die ich jetzt durch die Einsatznummer verknüpfen möchte.

Wofür soll das gut sein?
wenn du bestimmte Datensätze z.B. Einsatzdauer>10 min suchst, dann kannst Du das mit der Orginal DB auch erledigen. Die paar Datensätze zusätzlich werden keine moderne DB in die Knie zwingen.
Wenn Du hingegen eine Neue DB erstellen willst, die eine andere Struktur als das Original hat, dann solltest Du mit Hilfe von SQL eine Export/Import Päcksen schnüren, ein paar mal testen und dann die Daten übertragen und dann ganz schnell die alte DB vergessen.

Es gibt auch die Möglichkeit die Tabellen von zwei DBs in einer DB zusammen zu fassen.
Dadurch ist die Verarbeitung der Daten wesentlich vereinfacht.

Gruß
K-H

Alterauge 23. Sep 2012 16:40

AW: In zwei DB suchen, vergleichen, änder?
 
Hallo,
nun habe ich zwei Tabellen in einer Datenbank! Habe dieses erstmal geändert.
__________________________________________________ __________________________________________________ _________________________________
Die erste Tabelle (Fahrzeuge) besteht aus: DBGrid1/MyTable1
- Fahrzeug // Dieser Wert ändert sich nicht! (Ausnahme neues Fahrzeug usw.)
- Status // Dieser Wert ändert sich immer! (z.B. Fahrzeug befindet sich an der Einsatzstelle / Status 4)
- Einsatznummer // Dieser Wert ändert sich immer! ( z.B. Einsatznummer wird aus Tabelle zwei (Einsätze) hinzugefügt bzw. kopiert!)
__________________________________________________ __________________________________________________ _________________________________
Die zweite Tabelle (Einsätze) besteht aus: DBGrid2/MyTable2
- Einsatzmeldung // z.B Einsatzalarm Feuerwehr Wohnungsbrand I
- Uhrzeit // Zeitstempel
- Einsatz-Status // z.B. In Bearbeitung
- Einsatznummer // hier steht die Einsatznummer, die dann auch in Tabelle (Fahrzeug)kopiert wird!
- usw.
__________________________________________________ __________________________________________________ __________________________________
Jetzt wieder zur Frage:

Habe jetzt aus Tabelle (Fahrzeuge) bestimmte Fahrzeuge ausgesucht und die Einsatznummer aus Tabelle (Einsätze) kopiert.
So sehe ich dann, welches Fahrzeug zum welchem Einsatz gehört! (durch die Einsatznummer)

Jetzt ändert das Fahrzeug seinen Status von 2 nach 3 (Einsatz übernommen) in Tabelle (Fahrzeuge).
Jetzt soll sich der Einsatz-Status aus Tabelle (Einsätze ändern) von (In Bearbeitung) nach (Fahrzeug ausgerückt).

Wie kann ich dieses umsetzen?

In Textform:

wenn das Fahrzeug XX die Einsatznummer 1234 hat,und einem Status Wert von 3! dann:
suche in Tabelle (Einsätze)! nach:

einem Einsatz mit der Einsatznummer 1234 und dem Einsatz-Status: In Bearbeitung und ändere:
diesen Einsatz-Status in : (Fahrzeug ausgerückt) !


oder so: ist die Einsatznummer aus Tabelle 1 und Tabelle 2 gleich und der Wert Status 3 dann:
also die Schnittstelle sollte die Einsatznummer sein!
Fertig!

DeddyH 23. Sep 2012 16:56

AW: In zwei DB suchen, vergleichen, änder?
 
Mach Dich doch erst einmal mit den Grundlagen relationaler Datenbanken vertraut. Sofern ich die Anforderung korrekt verstanden habe, kommst Du mit 2 Tabellen lange nicht aus.

Alterauge 23. Sep 2012 17:02

AW: In zwei DB suchen, vergleichen, änder?
 
Zitat:

Zitat von DeddyH (Beitrag 1184077)
Mach Dich doch erst einmal mit den Grundlagen relationaler Datenbanken vertraut. Sofern ich die Anforderung korrekt verstanden habe, kommst Du mit 2 Tabellen lange nicht aus.

Ok DeddyH!
Werde dann jetzt mal ein wenig lesen!
Grundlagen relationaler Datenbanken!

DeddyH 23. Sep 2012 17:17

AW: In zwei DB suchen, vergleichen, änder?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal in IBExpert ein Diagramm erstellt, wie das aussehen könnte. Falls damit noch etwas nicht stimmen sollte, kann das daran liegen, dass ich die genaue Aufgabenstellung nicht kenne.

p80286 24. Sep 2012 09:48

AW: In zwei DB suchen, vergleichen, änder?
 
Ich denke, da sind die wesentlichen Daten erfasst.
Zusätzlich könnte man noch Daten des Einsatzfahrzeug, und das eingesezte Personal erfassen.

Gruß
K-H

DeddyH 24. Sep 2012 10:17

AW: In zwei DB suchen, vergleichen, änder?
 
Natürlich, ein Fahrzeugstatus (einsatzbereit, in Reparatur etc.) wäre auch noch denkbar, mir ging es aber zunächst um die grundlegende Struktur. So kann man einen Einsatz auch minutiös nachvollziehen und weiß später, wann welcher Status erreicht oder zumindest eingetragen wurde.

p80286 24. Sep 2012 13:03

AW: In zwei DB suchen, vergleichen, änder?
 
Zitat:

Zitat von DeddyH (Beitrag 1184147)
Natürlich, ein Fahrzeugstatus (einsatzbereit, in Reparatur etc.) wäre auch noch denkbar,..

halte ich erst in der Sahnephase für notwendig, zuerst sollten die mitfahrenden Personen (Fahrer, Beifahrer,...) erfasst, bzw. hinzugelinkt werden. Aber das ist ja kein Problem bei der Struktur, die Du entworfen hast.

Gruß
K-H

Sir Rufo 24. Sep 2012 13:08

AW: In zwei DB suchen, vergleichen, änder?
 
Hoffentlich passiert nix grösseres, denn bei dem Entwurf kann nur ein Fahrzeug pro Einsatz rausrücken :mrgreen:

DeddyH 24. Sep 2012 13:12

AW: In zwei DB suchen, vergleichen, änder?
 
Da sich der TE nicht mehr meldet, wäre das ja auch wurscht :mrgreen:

mkinzler 24. Sep 2012 13:13

AW: In zwei DB suchen, vergleichen, änder?
 
Dieses Problem sollte für den TE Dank seines (bald) umfassenden Wissens über RDBMS kein Problem darstellen.

p80286 24. Sep 2012 15:10

AW: In zwei DB suchen, vergleichen, änder?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1184178)
Hoffentlich passiert nix grösseres, denn bei dem Entwurf kann nur ein Fahrzeug pro Einsatz rausrücken :mrgreen:

Macht nichts da gibt's nur eins.

Wenn er sich die Papierversion zum Vorbild genommen hat, da wurden Großeinsätze über den Einsatzort und zeitliche Nähe abgebildet.

gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz