AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Tabellenfelder 2 versch. Datenbanken vergleichen
Thema durchsuchen
Ansicht
Themen-Optionen

Tabellenfelder 2 versch. Datenbanken vergleichen

Ein Thema von Luckner · begonnen am 3. Apr 2018 · letzter Beitrag vom 5. Apr 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#1

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 13:56
In der letzten SQL-Anweisung fehlt ja auch der JOIN (T2 ist gar nicht definiert).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 14:08
Stimmt. Habe es jetzt geändert, aber mit selben Meldung.
Delphi-Quellcode:
procedure TFrameRohwareLager.JvHTButton1Click(Sender: TObject);
begin
  DatamoduleAuftrag.DataModule2.ADOConnection1.Connected := false;
  DatamoduleAuftrag.DataModule2.ADOConnection1.connectionstring := 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source = ' + ADOConnection + ' ; Persist Security Info=False;';
  DatamoduleAuftrag.DataModule2.ADOConnection1.Connected := true;

  DatamoduleAuftrag.DataModule2.ADOQueryEtikbase.Active := False;
  DatamoduleAuftrag.DataModule2.ADOQueryEtikbase.SQL.Clear;
  DatamoduleAuftrag.DataModule2.ADOQueryEtikbase.SQL.Add('select Art-Nr, Format, Numerierung from Artikel T2 INNER JOIN [Material-Stamm] on Artikel.[Mat-Nr] = [Material-Stamm].[Mat-Nr] ORDER BY Artikel.[Mat-Nr]');
  DatamoduleAuftrag.DataModule2.ADOQueryEtikbase.Open;

  DatamoduleRohwareLager.DataModule9.IBDatabaseRohwareBewegung.Connected := true;
  DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.Close;
  DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.SelectSQL.Clear;
  DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.SelectSQL.Add('select ROHWARENR, FORMAT, OBERMATERIAL from ROHWARESTAND T1 LEFT JOIN T2 on T1.ROHWARENR = T2.Art-Nr where T1.FORMAT <> T2.Format OR T1.OBERMATERIAL <> T2.Numerierung order by ROHWARENR');
  DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.Open;
end;
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 14:13
Hallo Frickler,
Delphi-Quellcode:
  DatamoduleAuftrag.DataModule2.ADOQueryEtikbase.Active := False;
  DatamoduleAuftrag.DataModule2.ADOQueryEtikbase.SQL.Clear;
  DatamoduleAuftrag.DataModule2.ADOQueryEtikbase.SQL.Add('select Art-Nr, Format, Numerierung from Artikel T2 INNER JOIN [Material-Stamm] on Artikel.[Mat-Nr] = [Material-Stamm].[Mat-Nr] ORDER BY Artikel.[Mat-Nr]');
  DatamoduleAuftrag.DataModule2.ADOQueryEtikbase.Open;
funktioniert. Benutze schon für andere Abfragen und greife mit der ADO-Komponnente direkt auf eine ACCESS-Datenbank. Für die JOIN-Anweisung habe ich die eckigen Klammern auch ausgelassen.

Luckner
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.368 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 14:17
Hast du die SQL-Statements schon ohne Delphi geprüft?
Es wäre auch gut zu wissen, welches SQL-Statement den Fehler bringt.

Was mit auffällt:
Code:
select Art-Nr
Das müsste mMn in eckigen Klammern stehen.
Peter
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#5

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 14:22
Dazwischen JOIN T2 fehlt der Tabellenname.

Das muss irgendwie so aussehen: JOIN Tabellenname T2

Wenn die Tabellen in beiden Datenbanken den gleichen Namen haben, wird's wohl Join Artikel T2 heißen müssen.

Wahrscheinlich wäre es dann dashier:
Delphi-Quellcode:
DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.SelectSQL.Add('select ROHWARENR, FORMAT, OBERMATERIAL');
DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.SelectSQL.Add('from ROHWARESTAND T1');
DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.SelectSQL.Add('LEFT JOIN Artikel T2');
DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.SelectSQL.Add('on T1.ROHWARENR = T2.Art-Nr');
DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.SelectSQL.Add('where T1.FORMAT <> T2.Format');
DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.SelectSQL.Add('OR T1.OBERMATERIAL <> T2.Numerierung');
DatamoduleRohwareLager.DataModule9.IBDataSetRohwareBestand.SelectSQL.Add('order by ROHWARENR');
  Mit Zitat antworten Zitat
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#6

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 14:31
Das grosse Problem ist, dass ich auf die Firebird-Tabelle mit TDataset zugreife und auf die ACCESS mit einer ADO-Komponnente. Die Verknüpfung bekommen ich nicht hin.

Verbindung zu Firebird-Datenbank geht über "DatamoduleRohwareLager.DataModule9.IBDatabaseRohw areBewegung.Connected := true;"

Die einzelnen SQL-Statemens funktionieren für sich alleine gut.

Luckner.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd
Online

Registriert seit: 17. Feb 2005
Ort: Weitingen
684 Beiträge
 
Delphi 12 Athens
 
#7

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 14:47
In der Regel dürfte es nicht funktionieren, über zwei verschiedene Datenbanken hinweg eine SQL-Abfrage zu machen. Die beiden wissen ja nichts voneinander.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#8

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 14:52
In der Regel dürfte es nicht funktionieren, über zwei verschiedene Datenbanken hinweg eine SQL-Abfrage zu machen. Die beiden wissen ja nichts voneinander.
Wenn das tatsächlich die Absicht des Codes sein sollte, dann ist es ein Irrweg, ja.
Die Statements aus dem Eröffnungsthread sehen jedenfalls unvollständig aus, ein Gemisch aus Join und Where Syntax.

Falls wirklich Access mit Firebird gejoined werden soll, dann würde ich das (wenn es leider nun mal da ist) in Access selbst machen:
- FB Tabelle oder Viewe in Access verlinken per ODBC
- Abfrage in Access aus Access Tabelle und Firebird Link erzeugen.
- Abfrage in der Anwendung öffnen (oder eben zur Probe gleich in Access)
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#9

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 15:08
In der Regel dürfte es nicht funktionieren, über zwei verschiedene Datenbanken hinweg eine SQL-Abfrage zu machen. Die beiden wissen ja nichts voneinander.
Viele DBMS bieten Funktionen/Extensions an, wo man in der DB zu anderen DB oder gar anderen DBMS eine Verbindung aufbaut und Abfragen schicken kann.

z.B.
Cross-Server-Tabelle > Foreign Data Wrappers (permanent DB Link)
https://www.postgresql.org/docs/9.2/...tawrapper.html
https://wiki.postgresql.org/wiki/Foreign_data_wrappers

Cross-Server-Link > DB Link (temporär, old style)
https://www.postgresql.org/docs/9.3/static/dblink.html
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Apr 2018 um 15:12 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: Tabellenfelder 2 versch. Datenbanken vergleichen

  Alt 3. Apr 2018, 15:12
Viele DBMS bieten Funktionen/Extensions an, wo man in der DB zu anderen DB oder gar anderen DBMS eine Verbindung aufbaut und Abfragen schicken kann.
Aber eher nicht über Delphi Datenmodule, oder?
Gruß, Jo
  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 11:17 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