Index auf memofeld mit FOXCDX Treiber

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Index auf memofeld mit FOXCDX Treiber

Beitrag von Manfred »

Hi,

unter DBFNTX kann man auf ein Memofeld einen Index aufbauen. Wenn ich das mit FOXCDX probiere, bekomme ich immer eine Fehlermeldung mit Subcode "D". Kann das sein? Ich versuche das heute zum ersten Mal und bin etwas verwundert.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
DelUser01

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von DelUser01 »

Hallo Manfred

kenne mich mit FOXCDX nicht aus,
aber hast Du das schon zum Test über einen Funktions-Index versucht?

z.B.: Index on MyIndex( cMemo ) to "IndexFile"

Ob das geht oder auch ein Fehler kommt...
(Oder geht ein Funktions-Index nicht in FOXCDX?)
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von Manfred »

Hi Roland,

nein habe ich noch nicht. Habe ich aber schon dran gedacht. Ich wollte aber erstmal wissen, ob es da generell Unterschiede gibt. Index auf ein memofeld würde ich eh nicht machen, aber es ist ein übernommenes Projekt und da ist das halt drin.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von Tom »

Unter DBFNTX kann man keinen Index auf ein Memofeld setzen. Man kann höchstens Indexe setzen, die Funktionsausdrücke enthalten, die Inhalte von Memofeldern berücksichtigen. INDEX ON textfeld TO MeinIndex geht nicht. INDEX ON Left(textfeld,20) TO MeinIndex geht.
Herzlich,
Tom
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von Manfred »

stimmt, genau das meinte ich
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von Manfred »

Das hier klappt und NTX

Code: Alles auswählen

OrdCreate(x1index,,"SubStr(m_user,7,4) + SubStr(m_user,4,2) + SubStr(m_user,1,2) + SubStr(m_user,12,5 )")
unter FOX

Code: Alles auswählen

OrdCreate(x1index,"user","SubStr(m_user,7,4) + SubStr(m_user,4,2) + SubStr(m_user,1,2) + SubStr(m_user,12,5 )")
nicht
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von Herbert »

Ja hallo Manfred, schon lange ncihts mehr gelesen von dir...
So was Grausliches, auf Memofelder indexieren. (Ich weiss, du warst es nicht).
Erstell ein Textfeld mit 17 Zeichen Länge und kopier die ersten 17 Zeichen des Memos da hinein. So kannst du problemlos diesen Index erstellen und umgehst diesen Unsinn am einfachsten. Je nach der Verwendung dieser verschiedenen Substrings wäre ein Aufsplitten auf mehrere Textfelder angebracht.
Einige Leute haben echt keinen Begriff von Datenbankdesign. Dann musst du so was ausbaden.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von Manfred »

Hi Herbert,

ich agiere im Hintergrund ;-)
Deinen Vorschlag hatte ich auch schon durchdacht, geht aber leider im Moment nicht. Das ganze Teil muß nach und nach umgebaut werden. Das ist eine verdammt aufwändige Sache. Zur Zeit rüste ich von NTX auf CDX um und dabei ist mir das halt aufgefallen. Laut Anleitung geht das ja generell nicht, aber das es ohne zu murren bei NTX geht, das verwirrt mich ein wenig.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von AUGE_OHR »

hi,

wie sieht deine DBESYS aus ?
mit SixDrive/Comix funktioniert ein Index auf Memo bis 120 Zeichen.

Code: Alles auswählen

   _tagname := "MYDESCRIPT"
   _KEYFELD := "UPPER(SUBSTR(LTRIM(DESCRIPT)+SPACE(119),1,119))"
   ORDCREATE( _cdxname, _tagname, _keyfeld )
   CLOSE INDEX
p.s. ich verwende es nicht mehr ... statt dessen ein CUSTOM Index auf Memo wo ich jedes Wort indiziere.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von brandelh »

Dem Index ist es eigentlich völlig gleichgültig um was für ein Feld es sich handelt, solange man ihm Strings vorsetzt.
wichtig ist nur dass die Länge gleich bleibt :!:
Egal welche Order-DBE verwendet wird, intern wird immer nur der Stringwert gespeichert und alle Strings müssen gleich lang sein.

Ich denke dass dein Problem nicht an der CDX liegt, sondern an dem erzeugten String. Bei NORMALEN Datentypen stimmt das meist.

Code: Alles auswählen

OrdCreate(x1index,,"SubStr(m_user,7,4) + SubStr(m_user,4,2) + SubStr(m_user,1,2) + SubStr(m_user,12,5 )")
was genau passiert, wenn das Memofeld LEER ist, oder weniger als 20 Zeichen hat ?

genau, der Rückgabewert wird nicht mehr lang genug sein :!:
Bei einer DBF Datei ist ein Memofeld ja immer in 512 Byte Blöcken organisiert und eventuell kann der DBFNTX Treiber damit deshalb besser umgehen,
aber der Fehler liegt im Aufruf !

Aus deinem Code sehe ich, dass du 13 Zeichen in den Index schreiben willst, die genaue Länge muss garantiert werden !!!

Code: Alles auswählen

nIndexLen := 13 // ich hoffe ich habe oben richtig zusammengerechnet
OrdCreate(x1index,,"left(SubStr(m_user,7,4) + SubStr(m_user,4,2) + SubStr(m_user,1,2) + SubStr(m_user,12,5 )+space(nIndexLen),nIndexLen)")
PS: ich generiere sowas normalerweise mit einer eigenen Funktion, die die Länge sicherstellt, die Gesamtlänge wird sonst schnell unübersichtlich
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von Manfred »

Hi Hubert,

Dein Vorschlag klappt auch nicht. Also werde ich diese DBF erstmal mit DBFNTX erzeugen und den index auch und später sehen was machbar ist. Gibt es eben kurzfristig einen Mischbetrieb.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von Manfred »

und jetzt kommt der nächste Klops.

Unter NTX kann man anscheinend auch einen Index mit Charrem() aufbauen. Unter Foxcdx geht das gar nicht. Jedenfalls ist mir das bei der Umstellung aufgefallen, das es so war.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von brandelh »

denke daran, dass ALLE Indexschlüssel gleich lang sein MÜSSEN !
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Index auf memofeld mit FOXCDX Treiber

Beitrag von Manfred »

Ich weiß das. Mich wunderte nur, dass es unter NTX klappte.. Eigentlich ist es da erste, was man lernt. Gleichlange Indexschlüssel. keine Ahnung was ich noch so aufdecke.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten