DBF und MDX Fehler

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

DBF und MDX Fehler

Beitrag von sstvmaster »

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 Sa 12. Mai 2018, 21:42, insgesamt 2-mal geändert.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: DBF und MDX Fehler

Beitrag von sstvmaster »

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?
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: DBF und MDX Fehler

Beitrag von af0815 »

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).

wp_xyz
Beiträge: 4864
Registriert: Fr 8. Apr 2011, 09:01

Re: DBF und MDX Fehler

Beitrag von wp_xyz »

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!

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: DBF und MDX Fehler

Beitrag von sstvmaster »

Ich portieren hier nichts, bin Anfänger. Dann geht's halt nicht. Danke euch trotzdem.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: DBF und MDX Fehler

Beitrag von sstvmaster »

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
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: DBF und MDX Fehler

Beitrag von sstvmaster »

Bitte kann mir einer helfen?
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
theo
Beiträge: 10461
Registriert: Mo 11. Sep 2006, 19:01

Re: DBF und MDX Fehler

Beitrag von theo »

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.

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: DBF und MDX Fehler

Beitrag von sstvmaster »

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?
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: DBF und MDX Fehler

Beitrag von sstvmaster »

So,

Patch wurde angenommen -> fpc rev 38990
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
theo
Beiträge: 10461
Registriert: Mo 11. Sep 2006, 19:01

Re: DBF und MDX Fehler

Beitrag von theo »

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

Sehr gut, gratuliere.

Antworten