DBF-Status zwischenspeichern/zurückholen (erledigt]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
DelUser01

DBF-Status zwischenspeichern/zurückholen (erledigt]

Beitrag 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...
Zuletzt geändert von DelUser01 am Mi, 15. Nov 2017 0:24, insgesamt 1-mal geändert.
DelUser01

Re: DBF-Status zwischenspeichern/zurückholen

Beitrag von DelUser01 »

bin dahinter gekommen, warum das mit "normalen" Funktionen nicht geht, muss was eigenes machen...
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: DBF-Status zwischenspeichern/zurückholen (erledigt]

Beitrag von Rudolf »

Hallo Roland,
ich schick Dir ein PN mit meiner Funktion die seit sehr vielen Jahre zuverlässig funktioniert
Grüße
Rudolf
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DBF-Status zwischenspeichern/zurückholen (erledigt]

Beitrag von Wolfgang Ciriack »

Kannst du mir diese bitte auch senden ?
Viele Grüße
Wolfgang
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: DBF-Status zwischenspeichern/zurückholen (erledigt]

Beitrag 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.
DelUser01

Re: DBF-Status zwischenspeichern/zurückholen (erledigt]

Beitrag von DelUser01 »

Danke Rudolf - schaue ich mir nachher an...
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: DBF-Status zwischenspeichern/zurückholen (erledigt]

Beitrag von Wolfgang Ciriack »

Danke.
Viele Grüße
Wolfgang
Antworten