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
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
Code: Select all
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() }
Code: Select all
Static function UpdateEstado( x, oBrwf, n )
oRs2f:Fields( "imprime" ):value := iif(x,.t.,.f.)
oRs2f:Update()
obrwf:refresh()
return 0