Hallo soner,
beim Aufruf von make, wie von Dir beschrieben mit korrekt gesetztem Pfad
mit set PATH=%PATH%;C:\Lazarus\fpc\3.2.2\bin\x86_64-win64 im Verzeichnis
C:\Lazarus\fpc\3.2.2\source\packages\odbc
erhalte ich folgende Fehlermeldung:
C:\Lazarus\fpc\3.2.2\source\packages\odbc>make
C:/Lazarus/fpc/3.2.2/bin/x86_64-win64/ppcx64.exe fpmake.pp -n -Fu../../rtl -Fu../../packages/paszlib -Fu../../packages/fcl-process -Fu../../packages/hash -Fu../../packages/libtar -Fu../../packages/fpmkunit
Fatal: Can't find unit system used by fpmake
Fatal: Compilation aborted
make: *** [fpmake.exe] Error 1
Compilieren des Beispiels unter C:\Lazarus\fpc\3.2.2\source\packages\odbc\examples funktioniert aber.
Hast Du da einen Tip für mich?
Danke und Gruß
Helios
Fehlende ODBC Funktion (SQLCancel) unter FPC/Lazarus zur Verfügung stellen
-
- Beiträge: 1065
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Fehlende ODBC Funktion (SQLCancel) unter FPC/Lazarus zur Verfügung stellen
Möglicherweise ist dir nicht bewusst dass ZEOS eine Zugriffsbibliothek auf diverse Datenformate bzw die unterschiedlichsten Datenbanken ist. Open Source und gratis.Helios hat geschrieben: Mo 16. Mai 2022, 21:58 @charlytango:
Die Umsetzung in ODBC ist die 1. Wahl und ich bin immer noch überzeugt, das sollte mit wenig Aufwand möglich sein und würde mit einem Schlag die Cancel Funktion standardmäßig für viele ODBC Datenbanken und Server (im Core FPC) verfügbar machen, bei dem diesses Feature im ODBC Treiber und auf dem Server umgesetzt ist. Bei zwei von zwei (ODBC fähigen) Datenbanken (Firebird und Impala) funktioniert es nachweislich (siehe das Projekt in meinem letzten Post) bisher ohne erkennenswerte Probleme (hoffentlich bleibt das so).
Die haben mehr als 20 Jahre Erfahrung mit dieser Aufgabenstellung.
Das ist IMHO sehr lange vor der Zeit als SQLDB in Lazarus aufgenommen wurde.
Jedenfalls scheint in deren Version 7.3 ODBC als Zugriffsart verfügbar zu sein.
Ich persönlich bin halt so gestrickt dass ich zumindest mal versuchen würde die Bibliothek zu installieren um nachzusehen ob die das kann was du brauchst. Und falls nicht würde ich in deren Forum mal nachfragen ob dir das jemand (von den Entwicklern -- vielleicht auch gegen Cash) einbauen könnte, bevor ich den Weg beschreite mich in ein Framework einarbeiten zu müssen das umfangreich und komplex ist. Von möglichen Side-Effects und der nötigen Testumgebung für die ganze Bibliothek mal ganz schweigen.
Der Zeitaufand dafür wurde wohl unter "ferner liefen..." rangieren.
Im übrigen ist meine Meinung dazu: Möglicherweise bellst du vor dem falschen Baum.Helios hat geschrieben: Sa 2. Apr 2022, 08:23 Mir fehlt z.B. das SQLCancel (ja ich kämpfe immer noch mit langlaufenden SQL Abfragen, die ich sauber abbrechen möchte):
Ich hätte jetzt rückblickend in die letzten 30 Jahre keine Verwendung für ein Cancel in einer Produktivumgebung gehabt. Und auch kein Datenbankproblem das sich nicht zufriedenstellend lösen hätte lassen. Ja, manchmal mit Triggern, Views etc. die dereferenzierte Tabellen mitgeführt haben die entsprechende Auswertungen auf akzeptable Zeiten optimierten. Datenbankseitig, denn dazu ist sie da. Nicht Anwendungsseitig.
Die Gewichtung welche Funktionen die DB und welche das Frontend übernimmt muss genau abgewogen und ggfs auch getestet werden.
Ladies, ich bin raus

Re: Fehlende ODBC Funktion (SQLCancel) unter FPC/Lazarus zur Verfügung stellen
...sehe ich auch so und habe das auch immer so gehandhabt
Gruß, Michael
-
- Beiträge: 729
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Fehlende ODBC Funktion (SQLCancel) unter FPC/Lazarus zur Verfügung stellen
@Helios
Es sieht so aus als ob du die Datei "fpc.cfg" im Ordner "C:\Lazarus\fpc\3.2.2\bin\x86_64-win64" nicht hast. Du kannst es mit fpcmkcfg.exe erstellen oder nimm hier meins.
Mein Vorgehen ist bombensicher, ich habe erst gestern Teile von fcl-db und fcl-image geändert und neu kompiliert. Bei Fehler schaue dir die Fehlermeldungen genau.
Es sieht so aus als ob du die Datei "fpc.cfg" im Ordner "C:\Lazarus\fpc\3.2.2\bin\x86_64-win64" nicht hast. Du kannst es mit fpcmkcfg.exe erstellen oder nimm hier meins.
Mein Vorgehen ist bombensicher, ich habe erst gestern Teile von fcl-db und fcl-image geändert und neu kompiliert. Bei Fehler schaue dir die Fehlermeldungen genau.
- Dateianhänge
-
fpc-cfg.zip
- (2.8 KiB) 56-mal heruntergeladen
-
- Lazarusforum e. V.
- Beiträge: 120
- Registriert: Mi 29. Jun 2011, 22:36
- OS, Lazarus, FPC: Lazarus 4.0 Windows 10 64Bit / Arch Linux 64Bit
- CPU-Target: 64Bit
- Wohnort: Leonberg
Re: Fehlende ODBC Funktion (SQLCancel) unter FPC/Lazarus zur Verfügung stellen
Hallo Soner, charlytango, six1
@Soner:
ich habe die fpc.cfg wie beschrieben unter C:\Lazarus\fpc\3.2.2\bin\x86_64-win64 abgelegt. Das Compilieren mit make direkt unter
C:\Lazarus\fpc\3.2.2\source\packages\fcl-db\src\sqldb\odbc
und
C:\Lazarus\fpc\3.2.2\source\packages\odbc
funktionierte erst nicht. Dann habe ich auf der Ebene
C:\Lazarus\fpc\3.2.2\source\packages
und
C:\Lazarus\fpc\3.2.2\source\rtl
ein make clean und danach ein make ausgeführt und dann passte es.
Vielen Dank!
@charlytango, six1:
Bei mir sind es nur 27 Jahre Datenbankerfahrung, aber den "Cancel" Button hätte ich mir zum Debuggen/Optimieren meiner SQL Statements
direkt über ODBC schon früher gewünscht. Vielleicht kommt ihr ja noch auf den Geschmack und ich komme auf den Geschmack mit Zeos
(unter Firebird lief das sehr performant
) aber immer eins nach dem anderen...
Auch euch vielen Dank für eure Tipps und Rückmeldungen.
Den Hinweis von Sieben würde ich gerne nochmal aufnehmen, denn eigentlich hakt es ja nur daran, dass ich an den TSQLCursor aus dem TQuery
bzw. TODBCConnection nicht herankomme.
ein SQLCancel würde dann z.B. analog einem Fetch aus C:\Lazarus\fpc\3.2.2\source\packages\fcl-db\src\sqldb\odbc\odbcconn.pas
aussehen (meine ich jedenfalls):
Das ist es was mich wirklich wurmt, denn da verstehe ich das OOP Konstrukt nicht, und das würde ich gerne nachvollziehen können.
Gruß
Helios
@Soner:
ich habe die fpc.cfg wie beschrieben unter C:\Lazarus\fpc\3.2.2\bin\x86_64-win64 abgelegt. Das Compilieren mit make direkt unter
C:\Lazarus\fpc\3.2.2\source\packages\fcl-db\src\sqldb\odbc
und
C:\Lazarus\fpc\3.2.2\source\packages\odbc
funktionierte erst nicht. Dann habe ich auf der Ebene
C:\Lazarus\fpc\3.2.2\source\packages
und
C:\Lazarus\fpc\3.2.2\source\rtl
ein make clean und danach ein make ausgeführt und dann passte es.
Vielen Dank!
@charlytango, six1:
Bei mir sind es nur 27 Jahre Datenbankerfahrung, aber den "Cancel" Button hätte ich mir zum Debuggen/Optimieren meiner SQL Statements
direkt über ODBC schon früher gewünscht. Vielleicht kommt ihr ja noch auf den Geschmack und ich komme auf den Geschmack mit Zeos
(unter Firebird lief das sehr performant

Auch euch vielen Dank für eure Tipps und Rückmeldungen.
Den Hinweis von Sieben würde ich gerne nochmal aufnehmen, denn eigentlich hakt es ja nur daran, dass ich an den TSQLCursor aus dem TQuery
bzw. TODBCConnection nicht herankomme.
ein SQLCancel würde dann z.B. analog einem Fetch aus C:\Lazarus\fpc\3.2.2\source\packages\fcl-db\src\sqldb\odbc\odbcconn.pas
aussehen (meine ich jedenfalls):
Code: Alles auswählen
function TODBCConnection.Fetch(cursor: TSQLCursor): boolean;
var
ODBCCursor:TODBCCursor;
Res:SQLRETURN;
begin
ODBCCursor:=cursor as TODBCCursor;
// fetch new row
Res:=SQLFetch(ODBCCursor.FSTMTHandle); --> SQLCancel(ODBCCursor.FSTMTHandle)
if Res<>SQL_NO_DATA then
ODBCCheckResult(Res,SQL_HANDLE_STMT, ODBCCursor.FSTMTHandle, 'Could not fetch new row from result set.');
// result is true if a new row was available
Result:=Res<>SQL_NO_DATA;
end;
Gruß
Helios