"M" nach hinten sortieren ? [erledigt]
Verfasst: So, 02. Okt 2016 5:02
ich habe ein Array von DbStruct(). ich möchte die "M"emo Felder ans Ende sortieren.
das sortiert mir das "M" nach obenund das sortiert zwar ans Ende
aber die anderen Element sind "durcheinander"
hier mal Test Code, DBF wird erstelltwie macht man das richtig ?
das sortiert mir das "M" nach oben
Code: Alles auswählen
aSort := ASORT( aFelder,,, {|c1,c2| IF(c1[DBS_TYPE]="M",.T.,.F.) } )
Code: Alles auswählen
aSort := ASORT( aFelder,,, {|c1,c2| IF(c1[DBS_TYPE]="M",.F.,.T.) } )
hier mal Test Code, DBF wird erstellt
Code: Alles auswählen
#include "Dbstruct.ch"
PROCEDURE MAIN
LOCAL aStru
if !file("MEMODBF.DBF")
C_MEMODBF("MEMODBF.DBF")
endif
use MEMODBF
aStru := DbStruct()
msgbox(VAR2CHAR(aStru),"original")
// "M" ans Ende
// sonstige Reihen folge nicht verändern
ASORT(aStru,,, {|x,y| x[DBS_TYPE] <> "M" })
// soll werden :
// C N D L
// Notiz1 - Notiz4
msgbox(VAR2CHAR(aStru),"<>")
RETURN
FUNCTION C_MEMODBF(datei,alias,id)
LOCAL p,field_list:={}
if valtype(datei)!="C"
datei="MEMODBF.DBF"
endif
if valtype(alias)!="C"
p=at(".",datei)
alias=if(p>0,substr(datei,1,p-1),datei)
endif
if valtype(id)!="N"
id=0
endif
select (id)
if !file(datei)
aadd(field_list,{"TEST" ,"C",10,0})
aadd(field_list,{"NOTIZ1","M",10,0})
aadd(field_list,{"NUM" ,"N",10,0})
aadd(field_list,{"NOTIZ2","M",10,0})
aadd(field_list,{"DATUM" ,"D" ,8,0})
aadd(field_list,{"NOTIZ3","M",10,0})
aadd(field_list,{"LOGIK" ,"L", 1,0})
aadd(field_list,{"NOTIZ4","M",10,0})
dbcreate(datei,field_list)
endif
RETURN(.t.)