FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Problema con database
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
Problema con database
Posted: Fri Mar 26, 2010 12:31 AM
Hola les adjunto un progama que funciona bien pero tuve que agregar una base de datos y me da un problema , les adjunto el c贸digo y luego sigo con la explicaci贸n del problema ...

Code (fw): Select all Collapse
  FUNCTION BrwClient
  LOCAL oLbx ///

  LOCAL z := 0


  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)

[color=#804040]  if !pasaje("hasedro");cldata(aObj);return nil;endif
  DATABASE  oHasedro
  oHasedro:setorder(1)
  aadd(aObj,oHasedro)[/color]
  
[color=#800040]  IF !PASAJE("MAECLIE");cldata(aObj);return nil;ENDIF
  DATABASE oMae
  aadd(aObj,oMae)
  oMae:setorder(2)[/color]
  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)
// Varios variables locales 



  DEFAULT lNuevo := .F.


   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,oMae)
  


  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.) 
  


 
[color=#800040]  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  [/color]


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



if empty(aProd)
   return .f.
endif

oDatasedro:activate()

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
/*************************************************************************/
[size=150]static function borro(oBrw,oHasedro,oData,oMae)[/size]

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

    sysrefresh()
return nil

Continue the discussion