Subindex

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

Moderator: Moderatoren

Antworten
xellos
Rookie
Rookie
Beiträge: 19
Registriert: So, 10. Sep 2006 18:57
Wohnort: Maintal

Subindex

Beitrag von xellos »

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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

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:

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.
Leider greift der Subindex nicht.
Rech->( DbClearScope( SCOPE_BOTH ) )
Rech->( OrdSetFocus( "dcKdNr" ) )
Rech->( DbSetScope ( SCOPE_BOTH, Kunden->dcKdNr ) )
Rech->( OrdSetFocus( "dcRgNr" ) )
Also ich denke man darf den führenden Index nach einem scope nicht wechseln, da der scope ja auf dem Index beruht !
Gruß
Hubert
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1931
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re. Subindex

Beitrag von Rolf Ramacher »

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.
Gruß Rolf

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Antworten