AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi JOIN über unterschiedliche DBsysteme möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

JOIN über unterschiedliche DBsysteme möglich?

Ein Thema von PASST · begonnen am 23. Jun 2008 · letzter Beitrag vom 1. Jul 2008
Antwort Antwort
Seite 2 von 3     12 3      
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#11

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 24. Jun 2008, 17:46
Das große Problem scheint zu sein, dass dBase Tabellen sich nicht einbinden lassen.
Oder aber ich weiß nicht wie es geht!
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 24. Jun 2008, 18:22
So, ich habe das ganze jetzt mal ein bisken getestet.

Dies ist unter gewissen Bedingungen eine funktionierde Variante:
SELECT * FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="<Laufwerk:\Pfade\";Extended Properties=dBASE III;')...tabelle1 Wichtig dabei ist, dass Laufwerk ein lokal existierender Laufwerksbuchstabe ist. Es werden keine gemappten Freigaben akzeptiert und auch keine UNC-Pfade. Außerdem müssen die dBase-Tabellen Indexfrei sein.

Beide Bedingungen kann ich nicht erfüllen. Außer ich starte vorher eine Kopieraktion und bearbeite die dBase-Dateien byteweise, so dass das Index-Flag entfernt wird.

Hm, ....
  Mit Zitat antworten Zitat
shmia

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

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 24. Jun 2008, 18:23
Zitat von PASST:
Das große Problem scheint zu sein, dass dBase Tabellen sich nicht einbinden lassen.
Tja, zwischen Microsoft und dBase gibt es eine langjährige Feindschaft.
Also ich kenne im Prinzip zwei Wege um an dBase Tabellen ranzukommen.

1.) über die Jet-Engine (also der Kern von MS Access) ist auch so ein halblebiger dBase Zugriff möglich.
(der Treiber ignoriert die Indexdateien und liest nur *.dbf-Dateien. Auch Row-locking wird ignoriert.
Tabellen, die mit Unterstrich beginnen werden nicht erkannt)
ADO -> OLE DB -> DAO(=Jet Engine) -> dBase

2.) über den Foxpro ODBC-Treiber
ADO -> OLE DB -> ODBC Provider -> ODBC -> Foxpro ODBC-Treiber
dieser Treiber kann mit Indexdateien von Clipper nicht umgehen.

Hier die Connection-Strings dazu:
http://www.connectionstrings.com/?carrier=dbffoxpro
Bei Extended Properties ist dBASE III, dBase IV und dBase 5.0 zulässig.

Es gibt/gab auch bessere ODBC-Treiber, die aber Geld kosten.
Andreas
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 24. Jun 2008, 18:51
Ich habe im Entwickler-Forum.de ein Beitrag gefunden, der einen etwas anderen Ansatz hat. Allerdings wohl unter Berücksichtigung MS SQL Server 2005 (Express).
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 24. Jun 2008, 19:01
Hurra, ich habe jetzt eine Variante gefunden, die mit UNC-Pfad funktioniert:

SQL-Code:
SELECT * FROM OPENROWSET(
'MSDASQL','DRIVER={Microsoft Dbase driver (*.dbf)}',
'SELECT * FROM \\SERVER\Pfade\Tabelle1.dbf')
Das einzige Problem ist noch, dass ich vorher das Byte für den MDX-Flag der dBase Dateien löschen muss. Das ist aber nicht wirklich ein Problem, da Clipper zwar diesen Flag setzt, aber selber nicht verwendet. Außerdem will ich wie gesagt die dBase Daten nur lesen und nichts schreiben.
  Mit Zitat antworten Zitat
shmia

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

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 24. Jun 2008, 19:03
Zitat von PASST:
Ich habe im Entwickler-Forum.de ein Beitrag gefunden, der einen etwas anderen Ansatz hat.
Ja, das Kochrezept in Beitrag #4 ist ganz interessant.
Er verwendet Verbindungsserver (=Linked Server) und den Foxpro ODBC-Treiber.
download hier: http://www.microsoft.com/downloads/d...a-95a3289c5fd4
Das müsste analog auch auf den SQL Server 2000 passen.

Hab's grad' mal auf MS SQL Server 2000 SP4 getestet:
Tabellen mit SELECT abfragen geht. Update von Tabellen geht nicht.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

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

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 25. Jun 2008, 09:06
Zitat von shmia:
1.) über die Jet-Engine (also der Kern von MS Access) ist auch so ein halblebiger dBase Zugriff möglich.
(der Treiber ignoriert die Indexdateien und liest nur *.dbf-Dateien. Auch Row-locking wird ignoriert.
Tabellen, die mit Unterstrich beginnen werden nicht erkannt)
ADO -> OLE DB -> DAO(=Jet Engine) -> dBase

2.) über den Foxpro ODBC-Treiber
ADO -> OLE DB -> ODBC Provider -> ODBC -> Foxpro ODBC-Treiber
dieser Treiber kann mit Indexdateien von Clipper nicht umgehen.
3. über Advantage (Local Server)
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#18

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 25. Jun 2008, 09:55
@shmia
Wie kann ich denn unter MS SQL 20000 einen Linked Server einbinden?
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 25. Jun 2008, 11:13
Jetzt wo ich die Möglichkeit habe lesend auf meine dbase DB zuzugreifen, würde ich auch gerne die anderen Abfragen auch per ADO ausführen. Allerdings erhalte ich dabei eine Fehlermeldung bzgl. Datums:
SQL-Code:
where datum >= (16/5/2008)
--> Error converting data type DBTYPE_DBDATE to datetime.
Wenn ich das Datum durch year, month und day(datum) ausdrücke, funktioniert es.

Wie kann ich also das Datum-Kriterium umbauen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: JOIN über unterschiedliche DBsysteme möglich?

  Alt 25. Jun 2008, 11:17
where datum >= '16/5/2008' oder besser gleich mit (SQL-)Parametern
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 04:15 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