FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Error al editar columna en xbrowse
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 02:51 PM
Colegas, cuando intento modificar el dato de la columna el programa se friza y no obtengo error, este es c贸digo

Code (fw): Select all Collapse
Case 3
聽 聽 :aCols[ i ] : bStrData 聽聽 聽 聽 := { || oQry2 : caracter }
聽 聽 :aCols[ i ] : nDataStrAlign 聽:= 2
聽 聽 :aCols[ i ] : nEditType 聽 聽 聽:= EDIT_LISTBOX
聽 聽 :aCols[ i ] : aEditListTxt 聽 := { "Titular", "Suplente", "Contratado", "Prov." }
聽 聽 :aCols[ i ] : aEditListBound := { "T", "S", "C", "P" }
聽 聽 :aCols[ i ] : bOnPostEdit 聽 聽:= { | o, x, n | If( n != VK_ESCAPE, UpdateCaracter( x ), ) }
聽 聽 Exit


Y este es el c贸digo de la funci贸n UpdateCaracter

Code (fw): Select all Collapse
//----------------------------------------------------------------------------//
Function UpdateCaracter( x )

聽 聽 Local cUpdate := 'update from legajo set caracter = ' + ClipValue2Sql( x )
聽 聽 
聽 聽 oVar : oServer : Execute( cUpdate )
聽 聽 Return 0


Alguna idea ? Much铆simas gracias

Saludos
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 03:04 PM

Horacio, que version de Fwh utilizas?, Harbour o XHarbour?

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 03:10 PM

Gracias Cristobal por contestar, Mis herramientas son FWH 14.12, BCC 5.82 y Harbour 3.2.0dev (r1412151448)

Saludos

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 03:13 PM
Has comprobado si la instruccion se ejecuta correctamente ?

Code (fw): Select all Collapse
//----------------------------------------------------------------------------//
Function UpdateCaracter( x )

    Local cUpdate := 'update from legajo set caracter = ' + ClipValue2Sql( x )
    ?     ClipValue2Sql( x )
    oVar : oServer : Execute( cUpdate )
   ? 1
    Return 0
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 03:20 PM

Cristobal, la actualizaci贸n la hace ( arregl茅 el c贸digo de la funci贸n ) y se friza al picar sobre la opci贸n del combo.

Saludos

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 03:21 PM

O sea, ejecuta la funcion y no vuelve al browse?

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 03:22 PM

Exacto, no vuelve al browse, se friza antes

Saludos

Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 03:27 PM

Tambi茅n he notado que si oprimo la tecla ESC. la primera vez cierra el combo pero si lo vuelvo a abrir ya no vuelve a cerrarlo oprimiendo ESC.

Saludos

Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 04:14 PM

Estuve mirando en samples el programa testxbrw.prg y la edici贸n de celdas funciona perfectamente con arrays. Yo estoy utilizando Mysql con TDolphin. Alguien que utilice esta librer铆a y haya implementado la edici贸n de datos con xbrowse me puede contar su experiencia. Much铆simas gracias.

Saludos

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 04:32 PM
horacio wrote:Estuve mirando en samples el programa testxbrw.prg y la edici贸n de celdas funciona perfectamente con arrays. Yo estoy utilizando Mysql con TDolphin. Alguien que utilice esta librer铆a y haya implementado la edici贸n de datos con xbrowse me puede contar su experiencia. Much铆simas gracias.

Saludos

Horacio, si no me equivoco no importa si usas TDolphin ya que si haces edicion de celdas en un xBrowse lo haces es a un array, si pones algo de codigo creo sera mas facil entender tu problema y ayudarte en alguna solucion, gracias, saludos... :-)
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 04:37 PM
Gracias Jos茅 Luis, aqu铆 posteo el c贸digo

Code (fw): Select all Collapse
#include 'fivewin.ch'
Static oBrw2
Static oQry2

//----------------------------------------------------------------------------//
Function TablaLegajos( nCodigo, cCliente )

聽 聽 Local i
聽 聽 Local oFont1聽 聽 
聽 聽 Local oFont2聽 聽 
聽 聽 Local oFont3聽 聽 
聽 聽 Memvar oVar
聽 聽 

聽 聽 nCodigo 聽:= oVar : oQry : id_empleado
聽 聽 cCliente := oVar : oQry : nombre
聽 聽 oQry2 := oVar : oServer : Query( 'select a.id_legajo, b.descrip as sub_emp, a.caracter, concat( cast( a.anti_anios as char ), "/", cast( anti_meses as char ) ) as antiguedad, ' +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽'a.cargo, a.estado, a.horas, a.dp, a.dod, a.motivo, a.f_lic, a.f_f_lic, a.goce_sueldo, a.alta, a.suplea, a.desde, a.hasta ' +; 
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 'from legajo a, sub_emp b where id_empleado = ' + Alltrim( Str( nCodigo ) ) +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ' and a.id_empresa1 = b.empresa1 and b.empresa = ' + Alltrim( Str( oVar : nEmpresa ) ) ) 
聽 聽 
聽 聽 Define Font oFont1 Name "Segoe UI Light" Size 0, -12 Bold
聽 聽 Define Font oFont2 Name "Segoe UI Light" Size 0, -12
聽 聽 Define Font oFont3 Name "Segoe UI" 聽 聽 聽 Size 0, -16 聽

聽 聽 Define Window oVar : oWndChild2 MDICHILD Of oVar : oWndmain From -10, -10 To -100, -100 Pixel NoSysMenu NoCaption Title 'legajo/s de: ' + Alltrim( cCliente )//Color 0, CLR_BLACK
聽 聽 
聽 聽 聽 聽 @ 100, 20 xBrowse oBrw2 DataSource oQry2 Columns 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 Size 1300, 400 Pixel Of oVar : oWndChild2 NoBorder
聽 聽 聽 聽 With Object oBrw2
聽 聽 聽 聽 聽 聽 For i := 1 To Len( :aCols )
聽 聽 聽 聽 聽 聽 聽 聽 Switch i
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 1
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 聽:= 60
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽 := 'N潞 LEG.'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bStrData 聽聽 聽 聽:= { || StrZero( oQry2 : id_legajo, 6 ) }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽:= 260
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader := 'SECCI脫N'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nGrpHeight := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 3
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bStrData 聽聽 聽 聽 := { || oQry2 : caracter }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign 聽:= 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nEditType 聽 聽 聽:= EDIT_GET
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bEditValue 聽 聽 := { || Padr( oQry2 : caracter, 1, ' ' ) }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 //:aCols[ i ] : aEditListTxt 聽 := { "Titular", "Suplente", "Contratado", "Prov." }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 //:aCols[ i ] : aEditListBound := { "T", "S", "C", "P" }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bOnPostEdit 聽 聽:= { | o, x, n | UpdateCaracter( x ) }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cEditPicture 聽 := '@!'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 4
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽:= 60
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader := 'ANTIG.'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 7
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽:= 50
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 8
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'DESCUENTO' + CRLF + 'PRESENTISMO'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bStrData 聽 聽 := { || If( oQry2 : dp, 'SI', 'NO' ) } 
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 9
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'DESC. OBLIG.' + CRLF + 'D脥AS'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 10
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'ARTICULO DE' + CRLF + 'LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 11
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'FECHA INICIO' + CRLF + 'DE LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 12
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'FECHA FIN' + CRLF + 'DE LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 13
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'CON O SIN ' + CRLF + 'GOCE SUELDO'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bStrData 聽 聽 := { || If( Valtype( oQry2 : f_lic ) == 'D' .and. !Empty( oQry2 : f_lic ) , If( oQry2 : goce_sueldo, 'CON', 'SIN'), '' ) } 
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 14
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'F. DE INGRESO'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 15
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'REEMPLAZA A' 
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 //:aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 16
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'F. INICIO DE' + CRLF + 'LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 17
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'F. FIN DE' + CRLF + 'LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 EndSwitch聽 聽聽 聽 聽
聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader := Upper( :aCols[ i ] : cHeader )
聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : oHeaderFont 聽 := oFont1
聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : oDataFont 聽 聽 := oFont2
聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nHeadStrAlign := 0
聽 聽 聽 聽 聽 聽 Next i聽 
聽 聽 聽 聽 聽 聽 :bClrHeader 聽 聽 聽 聽 := { || { 0, CLR_WHITE 聽} }
聽 聽 聽 聽 聽 聽 :nRowHeight 聽 聽 聽 := 28
聽 聽 聽 聽 聽 聽 :nHeaderHeight 聽 聽:= 40
聽 聽 聽 聽 聽 聽 :nColDividerStyle := 1
聽 聽 聽 聽 聽 聽 :nRowDividerStyle := 5
聽 聽 聽 聽 聽 聽 :nColAdvance 聽 聽 聽:= 50
聽 聽 聽 聽 聽 聽 :nColorPen 聽 聽 聽 聽:= nRgb( 225, 225, 225 )
聽 聽 聽 聽 聽 聽 :nMarqueeStyle 聽 聽:= 3
聽 聽 聽 聽 聽 聽 :nFreeze 聽 聽 聽 聽 聽:= 2
聽 聽 聽 聽 聽 聽 :nRecSelColor 聽 聽 := CLR_WHITE
聽 聽 聽 聽 聽 聽 :bClrSelFocus 聽 聽 := { || { CLR_WHITE, RGB( 43, 87, 154 ) } }
聽 聽 聽 聽 聽 聽 :nHeaderLines 聽 聽 := 2
聽 聽 聽 聽 聽 聽 :lVScroll 聽 聽 聽 聽 := .f.
聽 聽 聽 聽 聽 聽 :lFlatStyle 聽 聽 聽 := .t.
聽 聽 聽 聽 聽 聽 :l2007 聽 聽 聽 聽 聽 聽:= .f.
聽 聽 聽 聽 聽 聽 :lKinetic 聽 聽 聽 聽 := .f.
聽 聽 聽 聽 聽 聽 :lAllowRowSizing 聽:= .f.
聽 聽 聽 聽 聽 聽 :lExcelCellWise 聽 := .t. 
聽 聽 聽 聽 聽 聽 :lFreezeLikeExcel := .t.
聽 聽 聽 聽 聽 聽 :lFastEdit 聽 聽 聽 聽:= .t.
聽 聽 聽 聽 聽 聽 :lColDividerComplete := .t.
聽 聽 聽 聽 聽 聽 :bKeyDown 聽 聽 聽 聽 := { | nKey | KeyLegajos( nKey ) } 聽
聽 聽 聽 聽 :SetGroupHeader( 'DATOS', 3, 14, oFont1 )
聽 聽 聽 聽 :SetGroupHeader( 'SOLO PARA SUPLENTES', 15, 17, oFont1 )
聽 聽 聽 聽 聽 聽 :CreateFromCode()
聽 聽 聽 聽 End
聽 聽 聽 聽 oVar : oWndChild2 : SetControl( oBrw2 )
聽 聽 
聽 聽 Activate Window oVar : oWndChild2 Maximized Valid ( oFont1 : End(), oFont2 : End(), oFont3 : End(), .t. )
聽 聽 Return 0
聽 聽 
//----------------------------------------------------------------------------//
Function UpdateCaracter( x )

聽 聽 Local cUpdate := 'update legajo set caracter = ' + ClipValue2Sql( x ) + ' where id_legajo = ' + Alltrim( Str( oQry2 : id_legajo ) )
聽 聽 
聽 聽 ? 'update legajo set caracter = ' + ClipValue2Sql( x ) + ' where id_legajo = ' + Alltrim( Str( oQry2 : id_legajo ) )
聽 聽 Memvar -> oVar : oServer : Execute( cUpdate )
聽 聽 oQry2 : Refresh()
聽 聽 oBrw2 : Refresh()
聽 聽 Return 0

//----------------------------------------------------------------------------//
Function KeyLegajos( nKey )

聽 聽 Memvar oVar
聽 聽 
聽 聽 Switch nKey
聽 聽 聽 聽 Case VK_F7
聽 聽 聽 聽 聽 聽 oVar : nOpcion := 1
聽 聽 聽 聽 聽 聽 ElijeOpcion()
聽 聽 聽 聽 聽 聽 Exit
聽 聽 EndSwitch
聽 聽 Return 0


Saludos
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Error al editar columna en xbrowse
Posted: Tue Mar 01, 2016 07:15 PM
horacio wrote:Gracias Jos茅 Luis, aqu铆 posteo el c贸digo

Code (fw): Select all Collapse
#include 'fivewin.ch'
Static oBrw2
Static oQry2

//----------------------------------------------------------------------------//
Function TablaLegajos( nCodigo, cCliente )

聽 聽 Local i
聽 聽 Local oFont1聽 聽 
聽 聽 Local oFont2聽 聽 
聽 聽 Local oFont3聽 聽 
聽 聽 Memvar oVar
聽 聽 

聽 聽 nCodigo 聽:= oVar : oQry : id_empleado
聽 聽 cCliente := oVar : oQry : nombre
聽 聽 oQry2 := oVar : oServer : Query( 'select a.id_legajo, b.descrip as sub_emp, a.caracter, concat( cast( a.anti_anios as char ), "/", cast( anti_meses as char ) ) as antiguedad, ' +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽'a.cargo, a.estado, a.horas, a.dp, a.dod, a.motivo, a.f_lic, a.f_f_lic, a.goce_sueldo, a.alta, a.suplea, a.desde, a.hasta ' +; 
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 'from legajo a, sub_emp b where id_empleado = ' + Alltrim( Str( nCodigo ) ) +;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ' and a.id_empresa1 = b.empresa1 and b.empresa = ' + Alltrim( Str( oVar : nEmpresa ) ) ) 
聽 聽 
聽 聽 Define Font oFont1 Name "Segoe UI Light" Size 0, -12 Bold
聽 聽 Define Font oFont2 Name "Segoe UI Light" Size 0, -12
聽 聽 Define Font oFont3 Name "Segoe UI" 聽 聽 聽 Size 0, -16 聽

聽 聽 Define Window oVar : oWndChild2 MDICHILD Of oVar : oWndmain From -10, -10 To -100, -100 Pixel NoSysMenu NoCaption Title 'legajo/s de: ' + Alltrim( cCliente )//Color 0, CLR_BLACK
聽 聽 
聽 聽 聽 聽 @ 100, 20 xBrowse oBrw2 DataSource oQry2 Columns 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 Size 1300, 400 Pixel Of oVar : oWndChild2 NoBorder
聽 聽 聽 聽 With Object oBrw2
聽 聽 聽 聽 聽 聽 For i := 1 To Len( :aCols )
聽 聽 聽 聽 聽 聽 聽 聽 Switch i
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 1
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 聽:= 60
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽 := 'N潞 LEG.'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bStrData 聽聽 聽 聽:= { || StrZero( oQry2 : id_legajo, 6 ) }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽:= 260
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader := 'SECCI脫N'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nGrpHeight := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 3
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bStrData 聽聽 聽 聽 := { || oQry2 : caracter }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign 聽:= 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nEditType 聽 聽 聽:= EDIT_GET
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bEditValue 聽 聽 := { || Padr( oQry2 : caracter, 1, ' ' ) }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 //:aCols[ i ] : aEditListTxt 聽 := { "Titular", "Suplente", "Contratado", "Prov." }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 //:aCols[ i ] : aEditListBound := { "T", "S", "C", "P" }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bOnPostEdit 聽 聽:= { | o, x, n | UpdateCaracter( x ) }
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cEditPicture 聽 := '@!'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 4
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽:= 60
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader := 'ANTIG.'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 7
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽:= 50
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 8
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'DESCUENTO' + CRLF + 'PRESENTISMO'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bStrData 聽 聽 := { || If( oQry2 : dp, 'SI', 'NO' ) } 
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 9
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'DESC. OBLIG.' + CRLF + 'D脥AS'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 10
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'ARTICULO DE' + CRLF + 'LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 11
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'FECHA INICIO' + CRLF + 'DE LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 12
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'FECHA FIN' + CRLF + 'DE LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 13
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'CON O SIN ' + CRLF + 'GOCE SUELDO'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : bStrData 聽 聽 := { || If( Valtype( oQry2 : f_lic ) == 'D' .and. !Empty( oQry2 : f_lic ) , If( oQry2 : goce_sueldo, 'CON', 'SIN'), '' ) } 
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 14
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'F. DE INGRESO'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 15
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'REEMPLAZA A' 
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 //:aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 16
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'F. INICIO DE' + CRLF + 'LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Case 17
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nWidth 聽 聽 聽 := 100
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader 聽 聽 聽:= 'F. FIN DE' + CRLF + 'LICENCIA'
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nDataStrAlign := 2
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 Exit
聽 聽 聽 聽 聽 聽 聽 聽 EndSwitch聽 聽聽 聽 聽
聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : cHeader := Upper( :aCols[ i ] : cHeader )
聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : oHeaderFont 聽 := oFont1
聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : oDataFont 聽 聽 := oFont2
聽 聽 聽 聽 聽 聽 聽 聽 :aCols[ i ] : nHeadStrAlign := 0
聽 聽 聽 聽 聽 聽 Next i聽 
聽 聽 聽 聽 聽 聽 :bClrHeader 聽 聽 聽 聽 := { || { 0, CLR_WHITE 聽} }
聽 聽 聽 聽 聽 聽 :nRowHeight 聽 聽 聽 := 28
聽 聽 聽 聽 聽 聽 :nHeaderHeight 聽 聽:= 40
聽 聽 聽 聽 聽 聽 :nColDividerStyle := 1
聽 聽 聽 聽 聽 聽 :nRowDividerStyle := 5
聽 聽 聽 聽 聽 聽 :nColAdvance 聽 聽 聽:= 50
聽 聽 聽 聽 聽 聽 :nColorPen 聽 聽 聽 聽:= nRgb( 225, 225, 225 )
聽 聽 聽 聽 聽 聽 :nMarqueeStyle 聽 聽:= 3
聽 聽 聽 聽 聽 聽 :nFreeze 聽 聽 聽 聽 聽:= 2
聽 聽 聽 聽 聽 聽 :nRecSelColor 聽 聽 := CLR_WHITE
聽 聽 聽 聽 聽 聽 :bClrSelFocus 聽 聽 := { || { CLR_WHITE, RGB( 43, 87, 154 ) } }
聽 聽 聽 聽 聽 聽 :nHeaderLines 聽 聽 := 2
聽 聽 聽 聽 聽 聽 :lVScroll 聽 聽 聽 聽 := .f.
聽 聽 聽 聽 聽 聽 :lFlatStyle 聽 聽 聽 := .t.
聽 聽 聽 聽 聽 聽 :l2007 聽 聽 聽 聽 聽 聽:= .f.
聽 聽 聽 聽 聽 聽 :lKinetic 聽 聽 聽 聽 := .f.
聽 聽 聽 聽 聽 聽 :lAllowRowSizing 聽:= .f.
聽 聽 聽 聽 聽 聽 :lExcelCellWise 聽 := .t. 
聽 聽 聽 聽 聽 聽 :lFreezeLikeExcel := .t.
聽 聽 聽 聽 聽 聽 :lFastEdit 聽 聽 聽 聽:= .t.
聽 聽 聽 聽 聽 聽 :lColDividerComplete := .t.
聽 聽 聽 聽 聽 聽 :bKeyDown 聽 聽 聽 聽 := { | nKey | KeyLegajos( nKey ) } 聽
聽 聽 聽 聽 :SetGroupHeader( 'DATOS', 3, 14, oFont1 )
聽 聽 聽 聽 :SetGroupHeader( 'SOLO PARA SUPLENTES', 15, 17, oFont1 )
聽 聽 聽 聽 聽 聽 :CreateFromCode()
聽 聽 聽 聽 End
聽 聽 聽 聽 oVar : oWndChild2 : SetControl( oBrw2 )
聽 聽 
聽 聽 Activate Window oVar : oWndChild2 Maximized Valid ( oFont1 : End(), oFont2 : End(), oFont3 : End(), .t. )
聽 聽 Return 0
聽 聽 
//----------------------------------------------------------------------------//
Function UpdateCaracter( x )

聽 聽 Local cUpdate := 'update legajo set caracter = ' + ClipValue2Sql( x ) + ' where id_legajo = ' + Alltrim( Str( oQry2 : id_legajo ) )
聽 聽 
聽 聽 ? 'update legajo set caracter = ' + ClipValue2Sql( x ) + ' where id_legajo = ' + Alltrim( Str( oQry2 : id_legajo ) )
聽 聽 Memvar -> oVar : oServer : Execute( cUpdate )
聽 聽 oQry2 : Refresh()
聽 聽 oBrw2 : Refresh()
聽 聽 Return 0

//----------------------------------------------------------------------------//
Function KeyLegajos( nKey )

聽 聽 Memvar oVar
聽 聽 
聽 聽 Switch nKey
聽 聽 聽 聽 Case VK_F7
聽 聽 聽 聽 聽 聽 oVar : nOpcion := 1
聽 聽 聽 聽 聽 聽 ElijeOpcion()
聽 聽 聽 聽 聽 聽 Exit
聽 聽 EndSwitch
聽 聽 Return 0


Saludos


Horacio, lo unico que he visto es que tratas de hacer una edicion de celdas sobre una Consulta(query), a menos que lo hayan cambiado, hasta donde se no se puede hacer edicion en un query dentro de un xbrowse, revisa que valor te esta entregando "x" en la funcion UpdateCaracter( x ) y lo que no entiendo es porque haces esto...

? 'update legajo set caracter = ' + ClipValue2Sql( x ) + ' where id_legajo = ' + Alltrim( Str( oQry2 : id_legajo ) )

cuando ya asignastes la linea a ejecutar a la variable

Local cUpdate := 'update legajo set caracter = ' + ClipValue2Sql( x ) + ' where id_legajo = ' + Alltrim( Str( oQry2 : id_legajo ) )

confirma si cuando llegas a la funcion UpdateCaracter() te trae un valor diferente al que ves en el xbrowse, hago lo que quieres pero o mostrando la data del query en el xbrowse y luego editando los datos en un Dlg o descargo la consulta en un array que llevo al xbrowse y alli si lo puedo editar en el mismo xbrowse, saludos... :-)
Dios no est谩 muerto...



Gracias a mi Dios ante todo!

Continue the discussion