Hallo,
in xbpBrowse kann man sich die Spaltenposition verändern. Geht so etwas bei mehrdimensionalen Array´s auch? Die Hilfe sagt dazu nichts und einen Befehl habe ich dazu auch nicht gefunden.
Beispiel:
Array vorher
Spalte1 Spalte2 Spalte3
Spalte1 Spalte2 Spalte3
Nacher
Spalte3 Spalte1 Spalte2
Spalte3 Spalte1 Spalte2
mfg
Wolfgang
Spalten eines Array
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:
Re: Spalten eines Array
Hi,
meinst du jetzt die Anzeige einer Spalte im Browser ?
Beim Aufbau entscheidest du, welche Browserspalte welche Arrayspalte darstellt.
Nach dem Aufbau könnte man das bestimmt ändern, müsste dann aber den Browser neu anzeigen lassen.
meinst du die Daten im Array selbst, von Spalte x nach Spalte Y ?
Das müsste man umkopieren ... allerdings sehe ich darin keinen Sinn !
Es ist übrigens empfehlenswert nicht direkt die Array Spaltennummer zu verwenden, sondern DEFINES, das ist leichter zu lesen und zu warten:
schwer zu lesen und fehlerträchtig. Wehe wenn jemand oben der Meinung ist, Vorname soll in der Spalte vor Name is Array ...
So ist es besser (siehe auch directory()):
Bei der Anwendung spielt die tatsächliche Spalte keine Rolle mehr - solange die DEFINE richtig sind
meinst du jetzt die Anzeige einer Spalte im Browser ?
Beim Aufbau entscheidest du, welche Browserspalte welche Arrayspalte darstellt.
Nach dem Aufbau könnte man das bestimmt ändern, müsste dann aber den Browser neu anzeigen lassen.
meinst du die Daten im Array selbst, von Spalte x nach Spalte Y ?
Das müsste man umkopieren ... allerdings sehe ich darin keinen Sinn !
Es ist übrigens empfehlenswert nicht direkt die Array Spaltennummer zu verwenden, sondern DEFINES, das ist leichter zu lesen und zu warten:
Code: Alles auswählen
aAdresse := { { "ID","Name", "Vorname", "Straße","Plz","Ort",...}, ... }
nAnzahl := len(aAdresse)
for i := 1 to nAnzahl
if aAdresse[i, 5] = "76543"
...
? alltrim(aAdresse[i,3])+" "+alltrim( aAdresse[i,2])
? aAdresse[i,4]
? alltrim(aAdresse[i,5])+" "+alltrim( aAdresse[i,6])
...
So ist es besser (siehe auch directory()):
Code: Alles auswählen
aAdresse := { { "ID","Name", "Vorname", "Straße","Plz","Ort",...}, ... }
#define ADR_ID 1
#define ADR_NAME 2
#define ADR_VNAME 3
#define ADR_STR 4
#define ADR_PLZ 5
#define ADR_ORT 6
nAnzahl := len(aAdresse)
for i := 1 to nAnzahl
if aAdresse[i, ADR_PLZ ] = "76543"
...
? alltrim(aAdresse[i,ADR_VNAME])+" "+alltrim( aAdresse[i,ADR_NAME])
? aAdresse[i,ADR_STR]
? alltrim(aAdresse[i,ADR_PLZ])+" "+alltrim( aAdresse[i,ADR_ORT])
...
Gruß
Hubert
Hubert
- 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:
Re: Spalten eines Array
Ach ja, wie ändert man ein Array ...
aDaten soll Spalte 3 mit 1 getauscht werden.
Da Xbase keinen direkten TAUSCH Befehl hat, braucht man eine Variable als Zwischenspeicher.
Man könnte direkt aZeile bearbeiten, und den letzten Parameter auf .t. setzen, ich aberbeite aber lieber direkt mit dem Array.
nIndex ist ein undokumentierter 2 Parameter, der die Zeile angibt, cMeinLocalVar erstellt im CodeBlock eine lokale Variable, die ich als Zwischenspeicher nutze.
Die DENINE müsste man nun natürlich auch anpassen, falls verwendet
aDaten soll Spalte 3 mit 1 getauscht werden.
Da Xbase keinen direkten TAUSCH Befehl hat, braucht man eine Variable als Zwischenspeicher.
Man könnte direkt aZeile bearbeiten, und den letzten Parameter auf .t. setzen, ich aberbeite aber lieber direkt mit dem Array.
nIndex ist ein undokumentierter 2 Parameter, der die Zeile angibt, cMeinLocalVar erstellt im CodeBlock eine lokale Variable, die ich als Zwischenspeicher nutze.
Code: Alles auswählen
aEval( aAdresse , {| aZeile, nIndex, cMeineLocalVar| cMeineLocalVar := aAdresse[nIndex,3], ;
aAdresse[nIndex,3] := aAdresse[nIndex,2], ;
aAdresse[nIndex,2] := cMeineLocalVar } )
Gruß
Hubert
Hubert