Seite 1 von 1
DBF-Status zwischenspeichern/zurückholen (erledigt]
Verfasst: Di, 14. Nov 2017 22:30
von DelUser01
Hallo
Hat einer eine kleine Routine um den gesamten DBF-Status zwischenzuspeichern (Array) und wieder zurückzuholen?
- Inderorder
- RecNo()
Bin vermutlich nur zu faul um nachzudenken...
Re: DBF-Status zwischenspeichern/zurückholen
Verfasst: Mi, 15. Nov 2017 0:24
von DelUser01
bin dahinter gekommen, warum das mit "normalen" Funktionen nicht geht, muss was eigenes machen...
Re: DBF-Status zwischenspeichern/zurückholen (erledigt]
Verfasst: Mi, 15. Nov 2017 12:13
von Rudolf
Hallo Roland,
ich schick Dir ein PN mit meiner Funktion die seit sehr vielen Jahre zuverlässig funktioniert
Grüße
Rudolf
Re: DBF-Status zwischenspeichern/zurückholen (erledigt]
Verfasst: Mi, 15. Nov 2017 13:49
von Wolfgang Ciriack
Kannst du mir diese bitte auch senden ?
Re: DBF-Status zwischenspeichern/zurückholen (erledigt]
Verfasst: Mi, 15. Nov 2017 14:00
von Rudolf
Hallo Wolfgang,
hier nochmal für alle
Grüße
Rudolf
Code: Alles auswählen
function savesel(cSel)
******************************************************************
local x,aRet := {},aWSL,cAlias,i
local cFilter,bFilter,akey,nOldOrder := 0
default cSel to ""
aWSL := workspacelist()
aadd(aRet,{ntrim(select()),alias(),recno(),indexord(),dc_setscope(0),dc_setscope(1),isshared()})
for x := 1 to len(aWSL)
cAlias := aWSL[x]
nOldOrder := (cAlias)->(indexord())
aKey := {}
FOR i:=1 TO (cAlias)->(OrdCount())
(cAlias)->(setorder(i))
AAdd( aKey,{i,(cAlias)->(dc_setscope(0)),(cAlias)->(dc_setscope(1))})
NEXT
(cAlias)->(setorder(nOldOrder))
aadd(aRet,{x,; // 1
cAlias,; // 2
(cAlias)->(recno()),; // 3
(cAlias)->(indexord()),; // 4
(cAlias)->(dc_setscope(0)),; // 5
(cAlias)->(dc_setscope(1)),; // 6
(cAlias)->(isshared()),; // 7
(cAlias)->(dbfilter()),; // 8
aKey}) // 9
next x
if !empty(cSel)
if sel(cSel)
return aRet
else
return NIL
endif
else
return aRet
endif
return NIL
function restsel(aSel)
******************************************************************
local x,y,lFound,cAlias,aWSL := workspacelist(),aKey,i
if aSel = NIL
return .t.
endif
for x := 1 to 255 // offene löschen
if !empty(alias(x))
lFound := .f.
for y := 2 to len(aSel)
if alias(x) = aSel[y,2]
lFound := .t.
exit
endif
next y
if !lFound
(alias(x))->(dbclosearea())
endif
endif
next x
for x := 2 to len(aSel)
cAlias := aSel[x,2]
if !dbused(cAlias) // wurde geschlossen
if !sel(cAlias,aSel[x,7])
//prot(cAlias + " Alias konnte nicht wieder geöffnet werden",addpath(al_path,"problem.log"))
select (aSel[1,1])
return .f.
endif
endif
aKey := aSel[x,9]
if dbused(cAlias)
for i := 1 to len(aKey)
(cAlias)->(setorder(aKey[i,1]))
(cAlias)->(dc_setscope(0,aKey[i,2]))
(cAlias)->(dc_setscope(1,aKey[i,3]))
next i
(cAlias)->(setorder(aSel[x,4]))
(cAlias)->(dbgoto(aSel[x,3]))
endif
next
select (aSel[1,1])
return .t.
Re: DBF-Status zwischenspeichern/zurückholen (erledigt]
Verfasst: Mi, 15. Nov 2017 14:30
von DelUser01
Danke Rudolf - schaue ich mir nachher an...
Re: DBF-Status zwischenspeichern/zurückholen (erledigt]
Verfasst: Mi, 15. Nov 2017 15:53
von Wolfgang Ciriack
Danke.