no me funciona setcheck

no me funciona setcheck

Postby artu01 » Wed Oct 02, 2019 12:30 am

Gente:
Con dbf si me salía el check de un campo lógico pero con una tabla temporal en mssql usando ado no lo consigo hacer
clickeo en la columna imprime pero no me aparece el check solo el cuadradito vacio
Espero me puedan ayudar, aquí mi código.

creación de tabla temporal
Code: Select all  Expand view

    cSQL := "CREATE TABLE #pfac"
    cSQL += "("
    cSQL += "numero CHAR(6) NOT NULL, "
    cSQL += "articu VARCHAR(7) NOT NULL, "
    cSQL += "descr VARCHAR(37), "
    cSQL += "um CHAR(3), "
    cSQL += "cap NUMERIC(4,0), "
    cSQL += "cantid int DEFAULT 0, "
    cSQL += "mts INT DEFAULT 0,"
    cSQL += "precio NUMERIC(12,4),"
    cSQL += "total NUMERIC(10,2),"
    cSQL += "unid int DEFAULT 0, "
    cSQL += "imprime bit DEFAULT 1,"  // campo lógico al cual le hare check
    cSQL += "subart varchar(10), "
    cSQL += "numcpe varchar(10)"
    cSQL += ")"

    Try
        oCon1:Execute( cSQL )
    Catch
        MsgInfo( "Table Create pfac Failed" )
    End try

 


Definición del xbrowse
Code: Select all  Expand view

    cSQL := "SELECT articu, descr, mts, um, cap, precio, cantid, imprime, total from #pfac "
a.codusu='"+codusu+"'"

    oRs2f := TOleAuto():New( "
ADODB.Recordset" )
    oRs2f:CursorLocation     := adUseClient
    oRs2f:CursorType         := adOpenStatic
    oRs2f:LockType           := adLockOptimistic

    TRY
      oRS2f:Open(cSQL,oCon1 )
      lRS := .t.
    CATCH oErr
      MsgInfo( "
Error en creacion de RecordSet" )
      oCon1:Close()
      RETURN(.F.)
    END TRY

    REDEFINE XBROWSE oBrwF                              ;
        DATASOURCE oRs2f                                ;
        COLUMNS "
articu", "DESCR","UM" ;
               ,"
CAP", "PRECIO", "Cantid", "TOTAL", "Imprime" ;   //==> col el cual hare check
        FIELDSIZES 60,200,30,40,50,55,70,70             ;
        HEADERS "
Codigo"                                ;
              ,"
Descripción"                            ;
              ,"
U.M."                                   ;
              ,"
Cap"                                    ;
              ,"
Precio"                                 ;
              ,"
Cant."                                  ;
              ,"
Importe"                                ;
              ,"
Imprime"                                ;
        PICTURES nil,nil,nil,'9,999', '999.9999', '999,999', '999,999.99', nil ;
        ID 4018 OF oFld:aDialogs[1]                     ;                                    
        UPDATE LINES CELL

        oBrwF:nStretchCol    := STRETCHCOL_WIDEST
        oBrwF:lFastEdit:= .t.
        oBrwF:nMoveType := 0

        oBrwF:aCols[6]:nEditType := EDIT_GET
        oBrwF:aCols[6]:cDataType := "
N"
        oBrwF:aCols[6]:bOnPostEdit    := { | o, x, n | UpdateCant( x, oBrwT, n), muestratotalf(oBrwT, @aArray, lCrea)}

        oBrwf:aCols[8]:bEditValue := {|| oRs2f:imprime>0 }
        oBrwf:aCols[8]:cDataType  := 'L'
        oBrwF:aCols[8]:nEditType := EDIT_GET
        oBrwF:aCols[8]:SetCheck()
        oBrwF:aCols[8]:bOnPostEdit    := { | o, x, n | UpdateEstado( x, oBrwT, n), muestratotalf(oBrwT, @aArray, lCrea) }
        oBrwF:nFreeze := 1
        oBrwF:nMarqueeStyle    = MARQSTYLE_HIGHLROW
        oBrwF:aJustify   := {.F.,.F.,.F.,.F.,.T.,.T.,.T.,.F.}
        oBrwF:bClrSel := {|| {  CLR_WHITE, GetSysColor(13 ) } }
        oBrwF:lHScroll := .t.
        oBrwF:lVScroll := .t.

        oBrwF:bLClicked := { |r,c,f,oBrw| IF( oBrwF:MouseColPos( c ) == 8, oBrwF:aCols[8]:CheckToggle(), nil ), ;   //para que sea un solo click el check
                                         oBrwF:RefreshCurrent() }


definición de function updateestado
Code: Select all  Expand view

Static function UpdateEstado( x, oBrwf, n )
  oRs2f:Fields( "imprime" ):value := iif(x,.t.,.f.)
  oRs2f:Update()
  obrwf:refresh()
return 0
 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 397
Joined: Fri May 11, 2007 8:20 pm
Location: Lima

Re: no me funciona setcheck

Postby Antonio Linares » Wed Oct 02, 2019 6:23 am

Prueba así:

oBrwF:aCols[8]:bOnPostEdit := { | o, x, n | UpdateEstado( x, oBrwT, n), muestratotalf(oBrwT, @aArray, lCrea), x }

Esta línea la puedes simplificar asi:
oRs2f:Fields( "imprime" ):value := x
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: no me funciona setcheck

Postby artu01 » Fri Oct 04, 2019 11:48 pm

Gracias por responder Antonio pero no logre que en el browse se muestre el check solo aparecia si le daba click a la celda pero inicialmente no mostraba el check a pesar que el dato era un campo booleana con valor 1 como puedes apreciar en mi definición de mi tabla temporal

Lo solucione cambiando el tipo de dato en mi tabla temporal de bit a char(1)

Sera que mi versión de fw es vieja o Mr. Rao falta afinar el xbrowse para que trabaje correctamente con campos booleanos de ms sql?

Code: Select all  Expand view

    cSQL := "CREATE TABLE #pfac"
    cSQL += "("......"
    cSQL += "
imprime char(1) DEFAULT 'S' NOT NULL"
    cSQL += "
)"

definición xbrowse
Code: Select all  Expand view

        oBrwf:aCols[8]:bEditValue := {|| IF( oRs2f:Fields("imprime"):Value = "S" , .T. , .F. )}
        oBrwf:aCols[8]:cDataType  := 'L'
        oBrwF:aCols[8]:nEditType := EDIT_GET
        oBrwF:aCols[8]:SetCheck()
        oBrwF:aCols[8]:bOnPostEdit    := { | o, x, n | UpdateEstado( x, oBrwT, n), muestratotalf(oBrwT, @aArray, lCrea) }

 


Code: Select all  Expand view

Static function UpdateEstado( x, oBrwf, n )
  oRs2f:Fields( "imprime" ):value := iif(x,"S","N")
  oRs2f:Update()
  obrwf:refresh()
return 0
 
fwh 17.12, harbour 3.2.0, pelles C, bcc7, Ms-Sql
artu01
 
Posts: 397
Joined: Fri May 11, 2007 8:20 pm
Location: Lima


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 31 guests