Seite 1 von 1
INDEX ON "1" to TEST record 10 [Erledigt]
Verfasst: Mi, 09. Aug 2017 19:13
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
Re: INDEX ON "1" to TEST record 10
Verfasst: Mi, 09. Aug 2017 20:35
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" ?
Re: INDEX ON "1" to TEST record 10
Verfasst: Mi, 09. Aug 2017 23:53
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.
Re: INDEX ON "1" to TEST record 10
Verfasst: Do, 10. Aug 2017 1:14
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
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
Re: INDEX ON "1" to TEST record 10 [Erledigt]
Verfasst: Do, 10. Aug 2017 14:10
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++ !!!
Re: INDEX ON "1" to TEST record 10 [Erledigt]
Verfasst: Do, 10. Aug 2017 22:18
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.
Re: INDEX ON "1" to TEST record 10 [Erledigt]
Verfasst: Do, 10. Aug 2017 22:21
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
Re: INDEX ON "1" to TEST record 10 [Erledigt]
Verfasst: Do, 10. Aug 2017 22:53
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.