Beitrag
von Zupan Miran » So, 04. Nov 2012 10:12
Hello
All my program have CDX index like this
aDbf := {"&pot_baze"+"PARTNER.dbf","&pot_baze"+"PARTNER.CDX","PARTNER", .T., 10,;
{ {"sifra","sifpar"},{"davcna","davcna_st"},{"naziv","naziv"} } }
this is something like old clipper way:
USE PARTNER
INDEX ON sifpar TAG sifra TO PARTNER
INDEX ON davcna_st TAG davcna TO PARTNER
INDEX ON naziv TAG naziv TO PARTNER
So, in PARTNER.CDX you have 3 keys (sifra, davcna,naziv) (translate: partner number, VAT number, name)
In program, i open the dbf
IF !tdOpenDbf("&pot_baze"+"PARTNER.dbf","PARTNER","shared")
close all; RETURN nil
ELSE
SET INDEX TO "&pot_baze"+"PARTNER"
OrdSetFocus("naziv")
ENDIF
so, when I first browse the partner.dbf , data are sorting by name, or, when you control input get data
(VAT) you must swith to example OrdSetFocus("sifra")
FUNCTION Ctrl_Part(oGetX1,oGetX2,oOld,novi)
LOCAL lVrni:=.F.
LOCAL aFields
LOCAL nRows := 24 , nCols := 76
BEGIN SEQUENCE
SELECT PARTNER
OrdSetFocus("sifra")
dbgotop()
IF dbseek(val(oGetX1:editbuffer())) .and..not. substr(alltrim(oGetX1:editbuffer()),1,1)="?"
oGetX1:setData( alltrim(str(sifpar))+space(8-len(alltrim(str(sifpar)))) )
oGetX2:setData( partner->naziv )
xnaziv_par:=naziv
xDatum_val:=dat_valute
xRabat_art:=rabat_art
xRabat_Kup:=rabat
IF novi=.T.
a30:=rabat
ENDIF
lVrni:=.T.
BREAK
ELSE
//*** doloci kolone in oznaci partnerja na crni listi ***
bColor := { || iif(crna="D", {tdRED,nil},{nil,nil} )}
bColor2 := { || iif( km=0 , {tdRED,nil},{tdBLU,nil} )}
aFields := { {"sifpar" ,"ćifra" ,.F.,,,, 4,bColor },;
{"naziv" ,"Naziv kupca",.F.,,,,22,bColor },;
{"ulica" ,"Naslov" ,.F.,,,,13,bColor },;
{"naslov" ,"Kraj" ,.F.,,,,11,bColor },;
{"davcna_st","Davźna" ,.F.,,,, 8,bColor },;
{"Km" ,"Km" ,.F.,,,, 4,bColor2} }
//*** postavi se na pravo mesto ***
OrdSetFocus("naziv")
dbgotop()
//*** iskanje ***
izberi:=tdIsearch(nRows,nCols,aFields,20,"Vnesi Kupca","@!",,"Seznam PARTNERJEV (izberi z ENTER)",,,,,,,,tdBROW2_PP,,oStari,,.T.,,.F.,.T.,,,,,,,1)
IF izberi=.F. //*** xbeK_ESC
lVrni:=.F.
ELSE //*** xbeK_ENTER
oGetX1:setData( alltrim(str(sifpar))+space(8-len(alltrim(str(sifpar)))) )
oGetX2:setData( partner->naziv )
xnaziv_par:=naziv
xDatum_val:=dat_valute
xRabat_art:=rabat_art
xRabat_Kup:=rabat
IF novi=.T.
a30:=rabat
ENDIF
lVrni:=.T.
ENDIF
//*** close
SetAppWindow(oOld)
SetAppFocus(oOld)
ENDIF
END SEQUENCE
SELECT RACUNI
RETURN lVrni
I hope this help
Miran Zupan
Slovenia