Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   C# Paradox -> OLE DB -> SQL Server (https://www.delphipraxis.net/77780-paradox-ole-db-sql-server.html)

Khabarakh 24. Sep 2006 19:53

Datenbank: Paradox/SQL Server • Version: 5.x(?)/2005 • Zugriff über: (ADO.NET)

Paradox -> OLE DB -> SQL Server
 
Huhu :hi:,

Ich bin gerade dabei, mehrere (bzw. für den Anfang erstmal eine ;) ) Paradox-Tabellen in den Sequel Server zu schaufeln (und zwar beliebig oft, einmal wäre kein großes Problem :zwinker: ) und dabei mit meinem Latein am Ende.
SQL-Code:
SELECT * FROM OPENROWSET(
'Microsoft.Jet.OLEDB.4.0',
'Paradox 5.x;Database=C:\Ablage\DATEN\',
'SELECT * FROM ABTEIL.DB')
Zitat:

Das "SELECT * FROM ABTEIL.DB"-Objekt kann nicht verarbeitet werden. Der OLE DB-Anbieter "Microsoft.Jet.OLEDB.4.0" für den Verbindungsserver "(null)" zeigt an, dass entweder das Objekt keine Spalten aufweist oder der aktuelle Benutzer keine Berechtigungen für dieses Objekt besitzt.
Mit der Fehlermeldung könnte man vielleicht etwas anfangen, funktionierte als Clientanwendung nicht alles perfekt o.O .
Code:
using (DataAdapter adapter = new OleDbDataAdapter("SELECT * FROM ABTEIL.DB", @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Ablage\DATEN;Extended Properties=Paradox 5.x;")) {
Auch wenn mich dieses in meinen Augen sehr komische Problem langsam ziemlich nervt, bin ich natürlich auch für andere Kopiervorschläge offen. Meine letzte Idee wäre eine managed SP mit dem Code von oben, aber naja -.- .

PS: Ein eingerichteter Verbindungsserver ändert leider nichts:
SQL-Code:
SELECT * FROM OPENQUERY(FOOBAR, 'SELECT * FROM ABTEIL.DB')

Khabarakh 1. Okt 2006 15:47

Re: Paradox -> OLE DB -> SQL Server
 
Hab nun mangels anderer Ideen mit der CLR-SP angefangen, nun will aber die OleDB-Connection nicht mehr mitspielen :wall: .
Delphi-Quellcode:
class method Customers.usp_Foo: Int32;
begin
      using var connection1: OleDbConnection := new OleDbConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Ablage\DATEN;Extended Properties=Paradox 5.x;') do begin
            var command1: OleDbCommand := new OleDbCommand('SELECT KUN_NUMMER FROM KUNDE.DB', connection1);
            connection1.Open;
            begin
                  result := command1.ExecuteScalar as Int32;
                  exit
            end
      end

end;
Zitat:

.NET Framework-Fehler beim Ausführen der benutzerdefinierten Routine oder des benutzerdefinierten Aggregats 'usp_RefreshCustomers':
System.Data.OleDb.OleDbException: Die externe Tabelle hat nicht das erwartete Format.
System.Data.OleDb.OleDbException:
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextF orSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText( Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(Comm andBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderIntern al(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteScalar()
at StoredProcedures.Customers.usp_RefreshCustomers()
.
Im Client funktioniert dieselbe Methode - natürlich - tadellos.
Wird wohl irgendwie an dem besonderen SQL-Server-Kontext liegen, aber mehr fällt mir dazu wirklich nicht ein :/ .


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:50 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