Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Zugriff mit Delphi3 über ODBC auf MSSQL und Widestrings (https://www.delphipraxis.net/113794-zugriff-mit-delphi3-ueber-odbc-auf-mssql-und-widestrings.html)

bluesbear 14. Mai 2008 21:36

Datenbank: MSSQL • Version: 2005 • Zugriff über: Das ist das Problem: BDE und ODBC

Zugriff mit Delphi3 über ODBC auf MSSQL und Widestrings
 
Ich habe ein Problem.
Gegenwärtig muss ich ich immer noch ein Delphi3 Programm fortentwickeln.
Eine Kundenanfrage beinhaltet den Zugriff auf eine MSSQL Datenbank.
Klappt soweit eigentlich - ich sehe die Tabelle im SQL Explorer (über ODBC), aber in dieser Datenbank sind auch Widestring-Felder. Die werden nicht angezeigt.
Ziemlich grausam das Ganze, sogar für Datum- oder Uhrzeitfelder werden die benutzt. Also was der, der sich das ausgedacht hat, sich dabei gedacht hat, will ich lieber gar nicht wissen <denk>.

Mit Delphi2007 ist das über ADO alles kein Problem, aber ich muss das mit Delphi3 machen können.

Meine Frage nun: Kennt jemand irgendwelche Komponenten, die ich hernehmen könnte? Darf ruhig was kosten.

Ich bin mit meinen Ideen am Ende.

sx2008 15. Mai 2008 00:12

Re: Zugriff mit Delphi3 über ODBC auf MSSQL und Widestrings
 
Gibt es in Delphi 3 die Klasse TWideStringField ? (suche in Unit DB)
Falls nicht, hast du sehr schlechte Karten.
Falls ja, hast du trotzdem noch schlechte Karten.
Es scheint mir unwahrscheinlich, dass ODBC-Treiber Widestrings durchreichen können.

Nachtrag: mit Delphi 5 Prof + ADO Express kann man TWideString - Felder aus MSSQL lesen/schreiben
(selbst getestet)
Du musst also nicht unbedingt auf D2007, aber obige Konstellation scheint mir die Mindestanforderung zu sein.

Bernhard Geyer 15. Mai 2008 06:18

Re: Zugriff mit Delphi3 über ODBC auf MSSQL und Widestrings
 
Könnte u.U. das dies wirklich nicht per ODBC erreichbar sind da MS AFAIK alle Erweiterungen seit der 6.5er-Version nicht mehr für ODBC bereitgestellt hat. Könnte aber auch sein das die BDE-Klassen einfach hier zu schlecht sind.

Du könntest im Notfall immer noch per Native ADO-Objekte (ohne Delphi-Wrapper) darauf zugreifen. Ich vermute aber das ein Umstieg auf eine neue Delphi-Version einfacher zu realisieren ist.

bluesbear 15. Mai 2008 08:33

Re: Zugriff mit Delphi3 über ODBC auf MSSQL und Widestrings
 
Das hatte ich befürchtet.
Immerhin - "geht so nicht" (mit vernünftigem Aufwand) ist schon mal eine Aussage.

Also die Widestrings müssen weg. :gruebel:

Kann man in einer View einen Typecast machen, Widestring auf Varchar?
Ich habe da in meinen Büchern nichts zu gefunden...

Bernhard Geyer 15. Mai 2008 09:07

Re: Zugriff mit Delphi3 über ODBC auf MSSQL und Widestrings
 
Zitat:

Zitat von bluesbear
Also die Widestrings müssen weg. :gruebel:

Oder Delphi 3 :-)

Zitat:

Zitat von bluesbear
Kann man in einer View einen Typecast machen, Widestring auf Varchar?

Der Cast-Befehl könnte u.U. sowas machen. Bedenke aber das du u.U. hier auch viel Arbeit hast da u.U. keinerlei DB-Indizes mehr verwendet werden.

NormanNG 15. Mai 2008 09:18

Re: Zugriff mit Delphi3 über ODBC auf MSSQL und Widestrings
 
Hi,

ein cast oder convert der betroffenen Rückgabespalten auf varchar(255) könnte helfen.
Solange diese Funktionen nicht im where- oder order-Teil auftauchen,
sollte dies auch keinen negativen Einfluss auf die verwendeten Indizes haben.

RavenIV 15. Mai 2008 09:22

Re: Zugriff mit Delphi3 über ODBC auf MSSQL und Widestrings
 
Zitat:

Zitat von bluesbear
Ich habe ein Problem.
Gegenwärtig muss ich ich immer noch ein Delphi3 Programm fortentwickeln.

Ich fände es an der Zeit, dass man dem Kunden eine komplett neue Software verkauft.
Ihr habt doch bestimmt einen guten Verkäufer, der das mit Argumenten belegen kann.
Die Software ist doch bestimmt 10 Jahre alt und die Hardware auch schon angestaubt.
So wie's sich anhört hat die Software auch kein gescheites Design. Dementsprechend ist bestimmt auch das UserInterface nicht mehr aktuell.

Vermutlich käme es den Kunden billiger, wenn er sich was Neues machen lässt.
In so alten Sourcen rumdoktern, wo schon 10 andere Programmierer ihren Müll eingebaut haben und sich damit rumärgern? Das hat doch keinen Wert.

Ich sollte das bei meinem vorherigen Arbeitgeber auch mal machen.
Es sollte auf Win98 laufen. Natürlich mit der alten Hardware. Und vor allem durfte die Geschwindigkeit nicht leiden.
Als erstes hab ich ne Aufwandschätzung durchgeführt und das mit dem zuständigen Projektleiter besprochen.
Der hat dann den Kunden überredet, gleich was Neues zu bestellen.
Der Kunde hat es dann eigesehen und neue Hardware und neue Software bestellt.
Nach Projektende hat er sich mit einer Kiste Schampus dafür bedankt, dass wir ihm die alte Lösung ausgeredet haben.

bluesbear 15. Mai 2008 10:11

Re: Zugriff mit Delphi3 über ODBC auf MSSQL und Widestrings
 
Vielen Dank, der CAST() Befehl war der entscheidende Hinweis :thumb:
Ich bin halt bei SQL noch Anfänger :wink:
Laut msdn geht das.
Was ich vergessen hatte zu erwähnen: Ich muss nur lesend auf den Kram zugreifen, und Indizes gibt es da schon mal gar nicht. Alles ganz fürchterlich.

"Delphi 3 muss weg" und "dem Kunden eine neue Software verkaufen" - Leute, ihr rennt da bei mir offene Türen ein! :-D
Es gibt widrige Umstände, die das in diesem Fall nicht zulassen. Der größte davon ist der Zeitfaktor.
Das mir das alles überhapt keinen Spaß macht, spielt leider keine Rolle :cry:
Das ganze Projekt wird derzeit mit Delphi2007 und Firebird neu konzipiert, aber das dauert, und der Kunde droht *jetzt mit Auftrag.


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