Hallo,
erbitte eure Hilfe beim Thema Subindex.
Ich habe eine Rechnungsdatei mit Kundennummer und mehreren Rechnungsnummern je Kunde. Mit DbScope filtere ich die Kundennummer und mit einem Subindex wollte ich die Rechnungsnummern absteigend sortieren.
Die Indexdateien CDX erzeuge ich wie folgt:
Rech->( OrdCreate ( "Rechnung", "dcKdNr", "DCKDNR" ) )
Rech->( OrdCondSet( ,,,,,,,,,, .t.,, .t. ) ) // ... absteigend, Subindex
Rech->( OrdCreate ( "Rechnung", "dcRgNr", "DCRGNR" ) )
Rech->( OrdListAdd( "Rechnung" ) )
Leider greift der Subindex nicht.
Rech->( DbClearScope( SCOPE_BOTH ) )
Rech->( OrdSetFocus( "dcKdNr" ) )
Rech->( DbSetScope ( SCOPE_BOTH, Kunden->dcKdNr ) )
Rech->( OrdSetFocus( "dcRgNr" ) )
Was mache ich falsch? OrdIsSubIndex("dcRgNr") sagt auch, dass es sich hierbei nicht um einen Subindex handelt.
Kann mir jemand helfen.
Vielen Dank
Timo
Subindex
Moderator: Moderatoren
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Timo,
also mit SubIndex habe ich mich noch nicht beschäftigt, aber dein geschildertes Problem (Führender Index findet Kunden, 2. Sortierbegriff sortiert eine andere Spalte) wird normalerweise (besser oft) mit einem kombinierten Indexbegriff (Ein Index, der beides enthält) erledigt:
also mit SubIndex habe ich mich noch nicht beschäftigt, aber dein geschildertes Problem (Führender Index findet Kunden, 2. Sortierbegriff sortiert eine andere Spalte) wird normalerweise (besser oft) mit einem kombinierten Indexbegriff (Ein Index, der beides enthält) erledigt:
Code: Alles auswählen
nLen1 := len(dcKdNr)
nLen2 := len(dcRgNr)
index on str(dcKdNr,nLen1)+str(dcRgNr,nLen2) ... // Beide aufsteigend ... oder
index on str(dcKdNr,nLen1)+Descend(str(dcRgNr,nLen2)) ... // 1. auf-, 2. absteigend ...
natürlich kann man das auch mit Ordcreate machen, aber so kann man es leichter lesen (und ich habe die Parameter besser im Kopf ;-)
Rech->( DbSetScope ( SCOPE_BOTH, Kunden->dcKdNr ) ) sollte dann den gewünschten Ausschnitt in gewünschter Sortierung bringen.
Also ich denke man darf den führenden Index nach einem scope nicht wechseln, da der scope ja auf dem Index beruht !Leider greift der Subindex nicht.
Rech->( DbClearScope( SCOPE_BOTH ) )
Rech->( OrdSetFocus( "dcKdNr" ) )
Rech->( DbSetScope ( SCOPE_BOTH, Kunden->dcKdNr ) )
Rech->( OrdSetFocus( "dcRgNr" ) )
Gruß
Hubert
Hubert
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re. Subindex
Hallo timo,
also mit Subindex habe ich mich auch noch nicht gearbeitet. Aber wie Hubert schon geschrieben hat, mache doch einen Index der beides enthält.
Mein Beispiel findest du unter Daten/Tabellen - zum Thema DbSope vom Manfred. Schau es dir mal an.
also mit Subindex habe ich mich auch noch nicht gearbeitet. Aber wie Hubert schon geschrieben hat, mache doch einen Index der beides enthält.
Mein Beispiel findest du unter Daten/Tabellen - zum Thema DbSope vom Manfred. Schau es dir mal an.