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 » Di, 14. Nov 2017 22:30

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 » Mi, 15. Nov 2017 0:24

bin dahinter gekommen, warum das mit "normalen" Funktionen nicht geht, muss was eigenes machen...

Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1403
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

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

Beitrag von Rudolf » Mi, 15. Nov 2017 12:13

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: 2422
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

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

Beitrag von Wolfgang Ciriack » Mi, 15. Nov 2017 13:49

Kannst du mir diese bitte auch senden ?
Viele Grüße
Wolfgang

Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1403
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

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

Beitrag von Rudolf » Mi, 15. Nov 2017 14:00

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 » Mi, 15. Nov 2017 14:30

Danke Rudolf - schaue ich mir nachher an...

Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2422
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Kontaktdaten:

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

Beitrag von Wolfgang Ciriack » Mi, 15. Nov 2017 15:53

Danke.
Viele Grüße
Wolfgang

Antworten