DBF und MDX Fehler

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

DBF und MDX Fehler

Beitragvon sstvmaster » 11. Mai 2018, 21:30 DBF und MDX Fehler

Hi,

habe hier eine dbase Datenbank mit mdx (Fritz!Fax) möchte diese gern auslesen.
Die dbf kann ohne mdx geöffnet werden, mit mdx kommt die Fehlermeldung:

Index based on unknown field "LEFT"

In der MDX sieht man im editor folgendes "UPPER(LEFT(DATEI, 100))".

Also scheint es in TDBF den Befehl "LEFT" nicht zu geben.

Kann ich da einen "feature request" dafür machen?

Oder kann ich den Befehl und Funktion selber schreiben, wenn ja in welcher datei?

Test Projekt: https://ufile.io/s0vbm

Vielen Dank für eure Hilfe

Maik
Zuletzt geändert von sstvmaster am 12. Mai 2018, 20:42, insgesamt 2-mal geändert.
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 86
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon sstvmaster » 12. Mai 2018, 15:57 Re: DBF und MDX Fehler

Warum ist diese Version von TDBF von hier: https://sourceforge.net/projects/tdbf/ nicht in Lazarus integiriert?

In dieser gibt es dieses LEFT?

Wer ist für DBFLaz verantworlich?
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 86
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon af0815 » 12. Mai 2018, 16:12 Re: DBF und MDX Fehler

Vieleichtweil es für Delphi und BCP deklariert ist.

Wen es dort vorhanden ist, so kannst du ja den Code nach FPC importieren und estesten,wenn es funktioniert, so kannst du sicher einen Patch einreichen.

Im Zeitaltervon sqlite und SQL haben alte Desktopdatenbanken einen niederen Stellenwert. Deshalb ist eine Erweiterung um das Feature, nurso, sicher nicht auf dem Radar der Entwickler.

Wer an der Software geschrieben hat, kann man in den Logs vom SVN nachlesen. Da es Open Source ist, kannst auch du für eine Änderung sorgen.

Btw werden Crossposts auch nicht so gerne gesehen.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3479
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon wp_xyz » 12. Mai 2018, 16:27 Re: DBF und MDX Fehler

af0815 hat geschrieben:Vieleichtweil es für Delphi und BCP deklariert ist.
Wen es dort vorhanden ist, so kannst du ja den Code nach FPC importieren

Aber bitte nicht im Delphi-Source-Code nachsehen und herauskopieren. Lazarus/FPC soll sauber bleiben!
wp_xyz
 
Beiträge: 2649
Registriert: 8. Apr 2011, 08:01

Beitragvon sstvmaster » 12. Mai 2018, 16:38 Re: DBF und MDX Fehler

Ich portieren hier nichts, bin Anfänger. Dann geht's halt nicht. Danke euch trotzdem.
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 86
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon sstvmaster » 12. Mai 2018, 20:50 Re: DBF und MDX Fehler

So ich hab mal probiert und nun ist folgende Patchdatei entstanden:

dbf_prscore.pas.patch:
Code: Alles auswählen
 
Index: dbf_prscore.pas
===================================================================
--- dbf_prscore.pas   (revision 38983)
+++ dbf_prscore.pas   (working copy)
@@ -1426,6 +1426,18 @@
   end;
 end;
 
+procedure FuncLeftString(Param: PExpressionRec);
+var
+  srcLen, index, count: Integer;
+begin
+  srcLen := StrLen(Param^.Args[0]);
+  index := 0;
+  count := PInteger(Param^.Args[1])^;
+  if index + count > srcLen then
+    count := srcLen - index;
+  Param^.Res.Append(Param^.Args[0]+index, count)
+end;
+
 procedure FuncUppercase(Param: PExpressionRec);
 var
   dest: PChar;
@@ -2336,6 +2348,7 @@
 {$ifdef SUPPORT_INT64}
     Add(TFunction.Create('STR',       '',      'LII', 1, etString, FuncInt64ToStr, ''));
 {$endif}
+    Add(TFunction.Create('LEFT',      'LEFT',  'SI',  2, etString, FuncLeftString, ''));
     Add(TFunction.Create('DTOS',      '',      'D',   1, etString, FuncDateToStr, ''));
     Add(TFunction.Create('SUBSTR',    'SUBS',  'SII', 3, etString, FuncSubString, ''));
     Add(TFunction.Create('UPPERCASE', 'UPPER', 'S',   1, etString, FuncUppercase, ''));
 
 


Ich habe Trunk 1.9.0 installiert via fpcupdeluxe. Wie kann ich nun fpc und Lazarus neu kompilieren damit ich die Änderung testen kann?

Die gepatchte Datei befindet sich in C:\fpcupdeluxe\fpcsrc\packages\fcl-db\src\dbase
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 86
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon sstvmaster » 13. Mai 2018, 15:46 Re: DBF und MDX Fehler

Bitte kann mir einer helfen?
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 86
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 13. Mai 2018, 16:34 Re: DBF und MDX Fehler

make clean all müsste eigentlich reichen für die FCL.
https://forum.lazarus.freepascal.org/in ... ic=29547.0
http://wiki.freepascal.org/buildfaq
Bei Lazarus kann man das neu bauen innerhalb der IDE veranlassen.
theo
 
Beiträge: 8058
Registriert: 11. Sep 2006, 18:01

Beitragvon sstvmaster » 13. Mai 2018, 18:33 Re: DBF und MDX Fehler

Also:
Mit cmd in das Verzeichnis C:\fpcupdeluxe\fpcsrc\packages\fcl-db\src\dbase wechseln und dann make clean all ausführen? Muss ich mit Set noch Parameter setzen?
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 86
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon sstvmaster » 14. Mai 2018, 20:43 Re: DBF und MDX Fehler

So,

Patch wurde angenommen -> fpc rev 38990
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 86
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 15. Mai 2018, 08:05 Re: DBF und MDX Fehler

sstvmaster hat geschrieben:Patch wurde angenommen -> fpc rev 38990

Sehr gut, gratuliere.
theo
 
Beiträge: 8058
Registriert: 11. Sep 2006, 18:01

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried