INDEX ON "1" to TEST record 10 [Erledigt]

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

INDEX ON "1" to TEST record 10 [Erledigt]

Beitrag von BJelinek »

Hallo zusammen.

Ich habe mal wieder ein Migrations-Problem.

Ich erzeuge ein Temporären Index mit einem Record.

INDEX ON "1" to TEST record 10

Unter Clipper hat das wunderbar funktioniert.
Laut Beschreibung in Xbase++ sollte es auch so funktionieren.

Tut es aber bei mir nicht.
Xbase++ (R) Version 2.00.817

Mit dem Workaround
dbgoto(10)
INDEX ON "1" to TEST while recno() = 10
geht es.

Habs an Alaska gemeldet.

Code: Alles auswählen

PROC MAIN
// Irgend eine test.dbf sollte da sein
use test exclusive
do while lastrec() < 20
 append blank
enddo
nRecNr := 10
clear screen
@0,0 say "Ohne Index"
dbedit(01,00,24,79)
// Lief bis jetzt unter clipper
index on "1" to test  record (nRecNr)
OrdListClear()
set index to test
clear screen
@0,0 say "Mit Index und record"
dbedit(01,00,24,79)
// Workaround()
OrdListClear()
index on "1" to test  while recno() = nRecNr
OrdListClear()
set index to test
clear screen
@0,0 say "Mit Index und Workaround"
dbedit(01,00,24,79)
return
Zuletzt geändert von BJelinek am Do, 10. Aug 2017 14:06, insgesamt 1-mal geändert.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: INDEX ON "1" to TEST record 10

Beitrag von AUGE_OHR »

BJelinek hat geschrieben: Mi, 09. Aug 2017 19:13 Ich erzeuge ein Temporären Index mit einem Record.

INDEX ON "1" to TEST record 10
heisst das Feld "1" ?

Code: Alles auswählen

INDEX ON FIELD->"1" to TEST record 10
gruss by OHR
Jimmy
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: INDEX ON "1" to TEST record 10

Beitrag von BJelinek »

Hallo Jimmy,

Nein "1" ist ein Konstanter Wert. Könnte auch "Hugo" heißen.

Der Index-Wert ist ja egal, es soll ja nur ein Index mit einem Satz erzeugt werden.
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: INDEX ON "1" to TEST record 10

Beitrag von AUGE_OHR »

BJelinek hat geschrieben: Mi, 09. Aug 2017 23:53 Nein "1" ist ein Konstanter Wert. Könnte auch "Hugo" heißen.
Der Index-Wert ist ja egal, es soll ja nur ein Index mit einem Satz erzeugt werden.
also nur der RecNO() = 10

ich habe es mit der v1.9x probiert und auch dort funktioniert das nicht

Code: Alles auswählen

   INDEX ON "1" TO "TEST.NTX" RECORD 10 NEXT 1
zumindest mit NEXT 1 dachte ich das es gehen müsste ... aber der zeigt alles an.

ein möglicher Workaround wäre auf Xbase++ CUSTOM Index umschreiben wenn es mit SCOPE nicht passt.

Code: Alles auswählen

PROCEDURE MAIN
LOCAL nRecNr := 10
   USE TIMEWORK.DBF
   BROWSE()

#IFDEF __XPP__
   // use Custom Index
   INDEX ON "1" TAG "MyCustom" TO "TEST.NTX" CUSTOM
   GOTO(nRecNr)
   OrdKeyAdd( "MyCustom")
#ELSE
   INDEX ON "1" TO "TEST.NTX" RECORD 10 NEXT 1
#ENDIF

   OrdListClear()
   set index to test
   go bottom
   BROWSE()
RETURN
gruss by OHR
Jimmy
Benutzeravatar
BJelinek
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 218
Registriert: Sa, 02. Jun 2012 20:57
Wohnort: 73257 Köngen
Hat sich bedankt: 9 Mal
Danksagung erhalten: 3 Mal

Re: INDEX ON "1" to TEST record 10 [Erledigt]

Beitrag von BJelinek »

Hallo zusammen.

Wer lesen kann ist echt im Vorteil.

Ist laut Alaska in der NTXDBE dokumentiert.

RECORD wird in Xbase++ in der NTXDBE nicht unterstützt.
im Gegensatz zu Clipper.

!!! Achtung beim Mirgrieren. Clipper --> Xbase++ !!!
Grüße
Bernd

Mitglied des Deutschsprachige Xbase-Entwickler e. V.
DelUser01

Re: INDEX ON "1" to TEST record 10 [Erledigt]

Beitrag von DelUser01 »

BJelinek hat geschrieben: Do, 10. Aug 2017 14:10Ist laut Alaska in der NTXDBE dokumentiert. RECORD wird in Xbase++ in der NTXDBE nicht unterstützt.
Woher hast Du die Info?
In der Doku der Help 20 steht:
  • INDEX ON <IndexKey> [TAG <cTagName>] ;
    TO <cIndexFile> ;
    [FOR <lForCondition>] ;
    [WHILE <lWhileCondition>] ;
    [NEXT <nCount>] ;
    [RECORD <xRecordID>] ;
    [EVAL <bBlock> [EVERY <nStep>] ] ;
    [REST] ;
    [ALL] ;
    [UNIQUE] ;
    [ASCENDING | DESCENDING] ;
    [ADDITIVE] ;
    [CANDIDATE] ;
    [SUBINDEX] ;
    [CUSTOM]

    <xRecordID>
    <xRecordID> is an optional record ID (for DBF files, it is the record number). If it is specified, only the specified record is copied into the index.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: INDEX ON "1" to TEST record 10 [Erledigt]

Beitrag von AUGE_OHR »

DelUser01 hat geschrieben: Do, 10. Aug 2017 22:18
BJelinek hat geschrieben: Do, 10. Aug 2017 14:10Ist laut Alaska in der NTXDBE dokumentiert. RECORD wird in Xbase++ in der NTXDBE nicht unterstützt.
Woher hast Du die Info?
NTXDBE (ORDER-Komponente)
Spezifikation für NTX-Dateien

Element Spezifikation
Dateigröße Limitiert auf den Offset für Satzsperren
Der Standard ist 1 GB (10^9 Bytes)
Datentypen C, D, L, N, kein Memo
Maximale Länge für:
- Indexausdruck 255 Zeichen
- FOR Bedingung 255 Zeichen
- TAG Name 10 Zeichen
Indizes pro Datei Einer
FOR Ausdruck Wird unterstützt
TAG Ausdruck Wird unterstützt
WHILE Ausdruck Wird unterstützt *)
EVAL..EVERY Option Wird ignoriert
RECORD Option Wird ignoriert
ALL..NEXT..REST Option Wird ignoriert

SET CHARSET Index basiert immer auf dem OEM Zeichensatz

*) Ab Xbase++ Version 1.9
gruss by OHR
Jimmy
DelUser01

Re: INDEX ON "1" to TEST record 10 [Erledigt]

Beitrag von DelUser01 »

Hallo Jimmy,

da muss einer wirklich an allen Stellen suchen und alle Zeilen lesen.

Bestimmt gibt es noch (alte) Dokus für die Umstellung Clipper -> Xbase++ die Bernd helfen solche Hürden zu nehmen.
Antworten