problema con database 2

problema con database 2

Postby surGom » Fri Mar 26, 2010 12:59 am

Disculpen el anterior mensaje pero quería remarcar las partes que me interesaban que vieran. Les envío casi todo el código sin la variables locales, y algunas asignaciones.

Tuve que agregar en el folder uno nuevo que esta remarcado en azul. En él al llamar a la función fsedro, selecciono un producto y me lo agrega a la base oHasedro, y todo bien , pero hete aquí que cuando quiero borrar un producto, me lo borra pero me agrega un nuevo registro duplicado al archivo maestro de clientes Maeclie(el cliente en cuestion) es decir dos registros idénticos (es lo que está en negritas).

Y la verdad no le encuentro la vuelta.
Espero puedan orientarme


FUNCTION BrwClient

if !pasaje("datos");return nil;endif
DATABASE oMemos
aadd(aObj,oMemos)
oMemos:setorder(1)

IF !PASAJE("DOMCLI");return nil;ENDIF
DATABASE oDomcli
aadd(aObj,oDomcli)
oDomcli:setorder(1)

IF !PASAJE("Clitrans");cldata(aObj);return nil;ENDIF
DATABASE oClitrans
oClitrans:setorder(1)
aadd(aObj,oClitrans)

if !pasaje("hasedro");cldata(aObj);return nil;endif
DATABASE oHasedro
oHasedro:setorder(1)
aadd(aObj,oHasedro)

IF !PASAJE("MAECLIE");cldata(aObj);return nil;ENDIF
DATABASE oMae
aadd(aObj,oMae)
oMae:setorder(2)

if nloguin # 10
oMae:setfilter( {|| (oMae:cAlias)->vendedor = nloguin} )
endif
oMae:gotop()
oMae:beof:={||nil}
aadd(aObj,oMae)
finarch(aObj)

define icon surge resource "icomega"
DEFINE DIALOG oDlg RESOURCE "DIALOG_1" icon surge
oDlg:cCaption := "Clientes"
oDlg:bgotfocus := {|| oMae:activate()}

REDEFINE SPLITTER oSplit[1] id 110 COLOR rgb(234,234,234) of odlg _3DLOOK
REDEFINE SPLITTER oSplit[2] id 111 COLOR rgb(234,234,234) of odlg _3DLOOK
REDEFINE LISTBOX olbx;
FIELDS STR(( oMae:cAlias)->NCLI ),; // Campos que contendr 
((oMae:cAlias)->NAPE),; // el TBrowse.
(oMae:cAlias)->Domi,;
(oMae:cAlias)->LOCA,;
(oMae:cAlias)->PCIA,;
(oMae:cAlias)->TELE,;
(oMae:cAlias)->CUIT,;
(oMae:cAlias)->IVA,;
(oMae:cAlias)->RUBRO,;
STR((oMae:cAlias)->VENDEDOR);
ON DBLCLICK CLIENTES(olbx,.f.,oMae,oMemos,oDomcli,oClitrans,oHasedro) ID 101 OF oDlg

oLbx:aheaders:= {"Código","Cliente", "Domicilio", "Localidad", "Provincia",;
"Telefono","Cuit","Iva","Rubro","Vendedor"}
oLbx:aColSizes := {60,210,190,190,190,160,90,100,180,60}
oLbx:bSkip = { | nRecs | oMae:Skipper( nRecs ) }
oLbx:nLineStyle := 3
oLbx:lAdjlastcol:= .F.
oLbx:nClrBackFocus := CLR_CYAN
oLbx:nClrForeFocus := CLR_WHITE



REDEFINE RADIO oRad VAR nOrden ID 108, 107, 112 OF oDlg;
ON CHANGE Orden(nOrden,oLbx,oMae,oMemos,oDomcli,oClitrans) // Al detectar un cambio se ejecutar  la funci¢n


REDEFINE BTNBMP oNbut[1] id 102 of oDlg resource "btnagregar","btnagrega1" ACTION Clientes( oLbx, .T.,oMae,oMemos,oDomcli,oClitrans,oHasedro ) NOBORDER
REDEFINE BTNBMP oNbut[2] id 103 OF oDlg resource "btncambio","btncambi1" ACTION Clientes( oLbx, .F.,oMae,oMemos,oDomcli,oClitrans,oHasedro) NOBORDER
REDEFINE BTNBMP oNbut[3] id 104 OF oDlg resource "btnbusca","btnbusc1" ACTION Buscar( oLbx, nOrden,oMae,"cli",oMemos,oDomcli,oClitrans,oHasedro) NOBORDER
REDEFINE BTNBMP oNbut[4] id 105 of oDlg resource "btnborra","btnborr1" ACTION autorizo(oLbx,oMae,oMae:nape) NOBORDER
REDEFINE BTNBMP oNbut[5] id 106 OF oDlg resource "btnimpri","btnimpr1" ACTION (reporbase(oMae,ctitulo),olbx:refresh()) NOBORDER
REDEFINE BTNBMP oNbut[6] id 109 OF oDlg resource "btnsalir","btnsali1";
ACTION cierroalias(oMae:calias,oMae,oMemos,oDomcli,oClitrans),oDlg:End() NOBORDER

for z = 1 to len(oNbut)
oDlg:aControls[ z ]:ltransparent := .t.
next


ACTIVATE DIALOG oDlg CENTER NOWAIT VALID (olbx:end(), sysrefresh(),cldata(aObj),.t.)




RETURN( NIL )


/***************************************************************************************************************************/


function clientes(olbx,lnuevo,oMae,oMemos,oDomcli,oClitrans,oHasedro)

LOCAL oBrw

oData:=oClone(oMae)
oHasedro:setfilter()
oHasedro:setfilter({ || (oHasedro:cAlias)->ncli == oMae:ncli })
oHasedro:gotop()

IF lNuevo
iif(!empty(oLbx), orden(2,olbx,oMae),oMae:setorder(1))
oMae:gobottom()
nclia := oMae:ncli
oData:blank()
oData:ncli := nclia + 1
nvendedor := 0
iif(!empty(oLbx), orden(1,olbx,oData),oData:setorder(2))
oData:setorder(1)
titu:= "Nuevo Cliente"
pciaa := ""
else
oMemos:seek(odata:ncli)
if oMemos:found()
cDato := oMemos:informe
endif
oData:goto(nRecno)
oData:load()
if !empty(oData:tipoib)
cConvenio := aConvenio[oData:tipoib]
endif
cConiva := vercond(oData:constiva)
cCongan := vercond(oData:constgan)
cConmono := vercond(oData:constmono)
pciaa := oData:pcia
ivaa:= oData:iva
cPla := oData:plazo
titu := "Modificar Cliente"
nVendedor := oData:vendedor
ENDIF




DEFINE DIALOG oDlgcli RESOURCE "FOLD_CLI" ICON surge

REDEFINE FOLDER oFold id 101 of oDlgcli;
PROMPTS "General","Impuestos","Sedronar","Datos";
DIALOGS "fold_cli1", "fold_cli2","fold_cli4" , "fold_cli3";

oDlgCli:bgotfocus := {|| odata:activate()}

REDEFINE GET oNcli VAR oData:ncli id 106 of oFold:adialogs[1] update
REDEFINE GET oNape VAR oData:nape picture "@!" id 107 of oFold:adialogs[1] update valid CampoNoVacio(oData:nape)
REDEFINE GET oDomi VAR oData:domi id 108 of oFold:adialogs[1] update
REDEFINE GET oLoca VAR oData:loca id 109 of oFold:adialogs[1] update
REDEFINE GET oCpos VAR oData:cpos id 118 of oFold:adialogs[1] update
REDEFINE COMBOBOX oPcia VAR pciaa id 110 items apciaa of oFold:adialogs[1] update valid (oData:nropcia :=(ascan(apciaa, pciaa)-1) ,.t.)
REDEFINE GET oTele VAR oData:tele id 120 of oFold:adialogs[1] update
REDEFINE GET oCuit VAR oData:cuit picture "99-99999999-9" id 113 of oFold:adialogs[1] update VALID altacuit(oData,lnuevo,"maeclie", oDlgcli)

REDEFINE CHECKBOX oConsigna VAR oData:lconsigna id 112 of oFold:adialogs[1] update

REDEFINE GET oRubr VAR oData:rubro picture "@!" id 111 of oFold:adialogs[1] update


REDEFINE GET oVen VAR nvendedor id 117 of oFold:adialogs[1] update ;
VALID iif(oApp:nloguin = 10,.t.,(nohay(),nvendedor := oData:vendedor, oVen:refresh(),.T.))

REDEFINE COMBOBOX oCiva VAR ivaa id 116 items aivaa of oFold:adialogs[1] update valid (oData:ti := strzero(ascan(aIvaa,ivaa),2) ,.t.)
REDEFINE BUTTON ID 121 of oFold:adialogs[1] ACTION AGRTRAN(oData:ncli,oClitrans)
REDEFINE GET oAte VAR oData:ate picture "@!" id 128 of oFold:adialogs[1] update
REDEFINE BUTTON ID 127 of oFold:adialogs[1] ACTION NEWADRESS(oData:ncli,aPciaa,oDomcli)
REDEFINE GET oCos[1] VAR cConiva id 114 of oFold:adialogs[1] update
REDEFINE GET oCos[2] VAR cCongan id 115 of oFold:adialogs[1] update
REDEFINE GET oCos[3] VAR cConmono id 119 of oFold:adialogs[1] update



REDEFINE COMBOBOX oPla VAR cPla id 126 items aPlazos of oFold:adialogs[2] update
REDEFINE GET oPercibe VAR oData:percibe picture "@e 999.99" id 130 of oFold:adialogs[2] update
REDEFINE GET oRetiene VAR oData:retiene picture "@e 999.99" id 131 of oFold:adialogs[2] update
REDEFINE GET oSaldo VAR oData:saldo picture "@e 999,999.99" id 114 of oFold:adialogs[2] update
REDEFINE GET oProm VAR oData:promedio picture "@e 999.99" id 115 of oFold:adialogs[2] update
REDEFINE CHECKBOX oChex var oData:cobro id 103 of oFold:adialogs[2] update
REDEFINE CHECKBOX oCheIb VAR oData:Ingbruto id 124 of oFold:adialogs[2] update
REDEFINE CHECKBOX oChedol VAR oData:facdol id 125 of oFold:adialogs[2] update
REDEFINE CHECKBOX oCheblo VAR oData:remito id 112 of oFold:adialogs[2] update when (oApp:nloguin = 10)
REDEFINE CHECKBOX oChecam VAR oData:difcam id 132 of oFold:adialogs[2] update
REDEFINE CHECKBOX oCheibcap VAR oData:ibcapital id 133 of oFold:adialogs[2] update
REDEFINE COMBOBOX oPla VAR cConvenio id 141 items aConvenio of oFold:adialogs[2] update
REDEFINE GET oPercap VAR oData:percap picture "@e 999.99" id 104 of oFold:adialogs[2] update
REDEFINE GET oRetcap VAR oData:retcap picture "@e 999.99" id 105 of oFold:adialogs[2] update
REDEFINE GET oNroib VAR oData:nroibruto picture "xxxxxxxxxxxxxx" id 140 of oFold:adialogs[2] update


REDEFINE GET oCedr VAR oData:cedronar id 101 of oFold:adialogs[3] update
REDEFINE GET oVtocedro VAR oData:vtocedro picture "@!" id 102 of oFold:adialogs[3] update
REDEFINE GET oInv VAR oData:inv id 103 of oFold:adialogs[3] update
REDEFINE SPLITTER oSplit1 id 107 COLOR rgb(234,234,234) of oFold:adialogs[3] _3DLOOK

REDEFINE LISTBOX oBrw FIELDS STR(( oHasedro:cAlias)->NCLI,5 ), ( oHasedro:cAlias)->PRODUCTO ID 104 OF oFold:adialogs[3]

oBrw:aheaders:= {"Código","Producto"}
oBrw:aColSizes := {100,210}
oBrw:bSkip = { | nRecs | oHasedro:Skipper( nRecs ) }
oBrw:nLineStyle := 3
oBrw:lAdjlastcol:= .t.
oBrw:nClrBackFocus := CLR_CYAN
oBrw:nClrForeFocus := CLR_WHITE

REDEFINE BUTTON nbut[4] ID 105 of oFold:adialogs[3] ACTION fsedron(oBrw,oHasedro,oData:ncli)
REDEFINE BUTTON nbut[5] ID 106 of oFold:adialogs[3] ACTION borro(oBrw,oHasedro,oData)




REDEFINE GET oMem VAR cDato MEMO ID 101 of oFold:adialogs[4];
message "Datos varios del cliente" UPDATE;
MULTILINE
oMem:SetSel(0,0)

REDEFINE BUTTON nbut[1] ID 105 of oDlgcli ACTION(lSalvar := .T.,oDlgcli:End())

REDEFINE BUTTON nbut[2] ID 106 of oDlgcli ACTION(oDlgcli:End()) CANCEL

REDEFINE BUTTON nbut[3] ID 122 of oDlgcli when (iif(lnuevo,nbut[3]:disable(),""),.t.);
ACTION(ctacli(odata:ncli,odata:nape,.f.))

// REDEFINE BUTTON nbut[4] ID 123 of oDlgcli ACTION(MEMCLI(odata:ncli))



ACTIVATE DIALOG ODLGCLI CENTER ON INIT (oNcli:setfocus(),.f.)




IF lSalvar .AND. !EMPTY( odata:nape)
IF lnuevo
odata:append()
ENDIF
oData:tipoib := ascan(aConvenio,cConvenio)
oData:plazo := cPla
oData:vendedor := nvendedor
oData:pcia := pciaa
odata:iva := ivaa //debido a que utilizo una variable
if reviso(odata)
odata:save()
odata:commit()
odata:unlock()
endif
if !empty(cDato)
oMemos:seek(oData:ncli)
if !oMemos:found()
yapar(oMemos)
else
reviso(oMemos)
endif
oMemos:ncli := oData:ncli
oMemos:informe := cDato
oMemos:save()
oMemos:commit()
oMemos:unlock()
endif
iif(!empty(olbx),olbx:refresh(),.f.) // Repintamos el objeto ListBox
ENDIF



sysrefresh()
return nil
/*************************************************************************/
static function fsedron(oBrw,oHasedro,nclia)
local aProd := bprodu()
local oDatasedro:= oclone(oHasedro)



if empty(aProd)
return .f.
endif


if aProd[5] = "S"
oDatasedro:blank()
oDatasedro:ncli := nclia
oDatasedro:codigo := aProd[1]
oDatasedro:producto := aProd[2]
oDatasedro:append()
if reviso(oDatasedro)
oDatasedro:save()
oDatasedro:commit()
oDatasedro:unlock()
endif
oBrw:refresh()
else
msgstop("No pertenece al listado de Sedronar")
endif

sysrefresh()
return nil
/*************************************************************************/
static function borro(oBrw,oHasedro,oData)

if reviso(oHasedro)
oHasedro:delete()
oHasedro:unlock()
endif
oBrw:Gotop()
oBrw:Refresh()

sysrefresh()
return nil
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: problema con database 2

Postby surGom » Fri Mar 26, 2010 1:02 am

Donde dice en negrita es ciano
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm

Re: problema con database 2

Postby surGom » Fri Mar 26, 2010 11:41 am

Lo pude solucionar agregando lo que está en negritas, lo que me extraña es que ese código funcionaba perfecto antes de agregar esa pestaña en el folder, y sigo sin entender porque me varia la posición del puntero en maeclie (oMae) Y ME REEMPLAZABA EL PRIMER registro de este archivo por el cliente en cuestión ya que en ningún momento cambiaba el puntero en maeclie (oMae)

IF lSalvar .AND. !EMPTY( odata:nape)
IF lnuevo
oData:append()
else
oData:goto(nRecno)
endif

Gracias.
Igual me gustaría saber en que fallaba el código.
surGom
 
Posts: 640
Joined: Wed Oct 19, 2005 12:03 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 88 guests