AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Den Inhalt von 2 Tabelle mit einer Schleife ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Den Inhalt von 2 Tabelle mit einer Schleife ändern

Ein Thema von robby3 · begonnen am 30. Okt 2005 · letzter Beitrag vom 1. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
robby3

Registriert seit: 30. Okt 2005
23 Beiträge
 
#1

Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 30. Okt 2005, 11:36
Datenbank: dbase • Zugriff über: SQL

Hallo zusammen,
ich möchte 2 Table Datenbänke vergleichen, die den gleiche Index und die gleichen Felder haben.
Sollte beim vergleichen ein Feld einen anderen wert haben so soll er den wert der 1 Table Datenbank annehmen.
Ich hoffe das jemand einen Tipp für mich hat.
Mit freundlichen Grüßen
Robby
Es gibt keine Dummen Fragen
nur Dumme Antworten
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

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

Re: Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 30. Okt 2005, 11:38
Na dann lösch doch alle Datensätze aus Tabelle 2 und fülle sie anschliessend wieder mit den Werten aus Tabelle 1.
  Mit Zitat antworten Zitat
robby3

Registriert seit: 30. Okt 2005
23 Beiträge
 
#3

Re: Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 30. Okt 2005, 11:53
In meiner 1 Datenbank habe ich nur ein teil meiner Daten aus der Datenbank 2.
Es gibt keine Dummen Fragen
nur Dumme Antworten
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

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

Re: Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 30. Okt 2005, 14:57
Folgender SQL Befehl ersetzt die Spalten wert1 und wert2 durch die Werte aus Tabelle 1. Voraussetzung sind dabei alledings, dass die Identifizierung eines Record in beiden Tabellen über den gleichen Primary Key ID identifiziert und in Relation gesetzt werden.

SQL-Code:
update table2
set wert1=table1.wert1, wert2=table1.wert2
from table2 inner join table1 on table2.ID=table1.ID
Was hierbei aber nicht berücksichtigt wird, sind das Hinzufügen von Records aus Table1 die in Table2 noch gar nicht existieren. Da müsste dann anschliessend noch folgender Code ausgeführt werden:

insert into table2 Select * from table1 where not(table1.ID in (select ID from table2)) Ob diese Befehle jetzt allerdings bei DBase klappen weiss ich nicht da ich kein so veraltetes DB System mehr nutze. Probiers einfach mal aus.
  Mit Zitat antworten Zitat
robby3

Registriert seit: 30. Okt 2005
23 Beiträge
 
#5

Re: Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 30. Okt 2005, 20:37
Ich habe mir etwas überlegt aber es Funzelt nicht es ist eine Unendliche Schleife,
was mach ich Verkehrt.
Delphi-Quellcode:
while not Data.Querymin.Eof do begin
data.tablelager.FindNearest([Data.querymin.fieldByName('pos')]);
data.TableLager.active:=true;
data.tableLager.edit;
Data.tableLager.fieldByName('stueck').AsInteger := Data.QueryMin.fieldByName('stueck').AsInteger ;
  data.TableLager.post;
Data.QueryMin.next;
     end;
Es gibt keine Dummen Fragen
nur Dumme Antworten
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 30. Okt 2005, 21:00
Herzlich willkommen in der Delphi-PRAXiS, robby3.

Das Setzen von Table.Active auf TRUE in deiner Schleife ist falsch, sollte aber ignoriert werden und keine Endlosschleife verursachen. Es entspricht einem Table.Open, welches du aber außerhalb deiner Schleife bestimmt schon gemacht hast, sonst würde FindNearest eine Exception werfen. Um deinen Verdacht auf eine Endlosschleife zu überprüfen kannst du die Kenndaten (Spaltenwert pos) der die Schleife steuernden Query im StatusBar zusammen mit einem Satzzähler ausgeben. Beim bloßen Anschauen deines Codes kann ich aber keine Endlosschleife erkennen.

Grüße vom marabu

PS: Im Prinzip funktionieren die folgenden SQL statements in LOCALSQL.

SQL-Code:
update lager
  set stueck = (select stueck from qmin where lager.pos = qmin.pos)
  where exists (select pos from qmin where qmin.pos = lager.pos)

insert into lager select * from qmin
  where not exists (select pos from lager where lager.pos = qmin.pos)
  Mit Zitat antworten Zitat
robby3

Registriert seit: 30. Okt 2005
23 Beiträge
 
#7

Re: Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 31. Okt 2005, 10:45
Hallo und Guten Morgen zusammen.

Ich habe herausgefunden dass der FindNearest der Verursacher der Schleife ist
Ich habe deine SQL Anweisung ausprobiert und bekomme die Fehler Meldung
„Ungültiger Feldname pos“
Pos soll doch der Index in der Abfrage sein oder ??????
Es gibt keine Dummen Fragen
nur Dumme Antworten
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 31. Okt 2005, 13:41
Den Feldnamen POS habe ich in deinem Code gelesen. In meinen SQL-Statements muss da einfach die Tabellenspalte verwendet werden, die einen Datensatz eindeutig identifizieren kann.

FindNearest() ist bei deiner Art des Zugriffs sicher nicht die beste Wahl. Ich hätte FindKey() benutzt.

Grüße vom marabu
  Mit Zitat antworten Zitat
robby3

Registriert seit: 30. Okt 2005
23 Beiträge
 
#9

Re: Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 31. Okt 2005, 16:23
Ich habe mit den SQL Code von marabu rumgefummelt, aber die Daten werden nur Geändert wenn ich zum Schluss
 Qmin.active:= true ; setze,
aber dann Stürzt das Programm mir folgender Fehlermeldung ab, „ Fehler beim Erstellen des Cursor_Handle“
und die Daten sind Anschließend wenn ich das Programm neu Start, geändert worden.

Wenn ich aber den
Qmin.active:= true ; lösche werden keine Daten verändert und das Programm Stürzt auch nicht ab.???????
Es gibt keine Dummen Fragen
nur Dumme Antworten
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Den Inhalt von 2 Tabelle mit einer Schleife ändern

  Alt 1. Nov 2005, 13:16
Hallo Robby,

die SQL-Statements für sich genommen sind in Ordnung. Was du draus machst, kann ich nicht erkennen, wenn du nur eine einzige Zeile aus deinem Code zeigst. Es scheint ja so zu sein, dass du den SQL-Code fehlerfrei ausführen konntest. Wenn die dabei geänderte Tabelle auch in irgendwelchen TQuery- oder TTable-Komponenten verwendet wird, dann musst du für diese Komponenten die Methode Refresh() ausführen, damit die Änderungen sofort sichtbar werden.

marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:47 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