Página 1 de 1

TDBCOMBOBOX (TDATAFIELD Argument error)

Publicado: Jue Feb 13, 2025 12:16 am
por Hurricane
Fui a editar un registro, no modifiqué ningún campo, cuando voy a guardar me aparece el error, Xailer 8 y 9.
DBComboBox
  • En la tabla, el campo numérico asociado a DC tiene el valor 99
  • Diseñador: dtBOUND, csDROPDOWNLIST, aItems y aItemsBound vacíos
  • Comienza vacío
Si el campo de la tabla tiene un valor que no existe en el DbComboBox (comenzará vacío), si el usuario no selecciona un elemento, se producirá un error al guardar.
Versão do Xailer: Xailer 8.0.1
Compilador: Harbour 3.2.0dev (r1912031042)
Compilador C/C++ : MinGW GNU C 7.3 (32-bit)
Plataforma Windows: Windows 10 10.0

-------------------- Informação de manejo de erro interno ---------------------

Chamada Subsistema: BASE
Código Sistema: 1070
Status por Defeito: .F.
Descrição: Argument error
Operação: ==
Argumentos: [ 1] = Tipo: N Val: 99 [ 2] = Tipo: C Val:
Ficheiros envolvidos:
Dos Error Code: 0

Trace Through:
TDATAFIELD:HASCHANGED (168)
TDBCOMBOBOX:SETDATA (98)
(b)XDBFDATASET_SAVE (1140)
AEVAL (0)
TDBFDATASET:SAVE (1140)
TDBFDATASET:UPDATE (798)
TFRMPEDIDO:FORMCLOSE (108)
TFRMPEDIDO:ONCLOSE (0)
TFRMPEDIDO:WMCLOSE (693)
SENDMESSAGE (0)
(b)XCONTROL (101)
TFRMPEDIDO:SENDMSG (0)
(b)XFORM (116)
TFRMPEDIDO:CLOSE (0)
TGLASSBTN:CLICK (105)
(b)XCONTROL (156)
TGLASSBTN:COMMAND (0)
TSCROLLINGWINCONTROL:WMCOMMAND (275)
TFRMPEDIDO:WMCOMMAND (965)
TFRMPEDIDO:SHOWMODAL (0)
FRMPEDIDO (76)
(b)BRWPEDIDO (61)
TFRMBROWSE:BRWKEYDOWN (74)
TDBBROWSE:ONKEYDOWN (0)
TFRMBROWSE:BRWDBLCLICK (87)
TDBBROWSE:ONDBLCLICK (0)
TDBBROWSE:WMLBUTTONDBLCLK (2112)
TFRMBROWSE:SHOWMODAL (0)
FRMBROWSE (51)
BRWPEDIDO (61)
(b)TFRMPRINCIPAL_FORMCREATE (29)
TMENUITEM:ONCLICK (0)
TMENU:DOACTION (253)
TMENU:DOACTION (258)
TFRMPRINCIPAL:WMCOMMAND (958)
RUNFORM (0)
TAPPLICATION:RUN (289)
MAIN (22)

Re: TDBCOMBOBOX (TDATAFIELD Argument error)

Publicado: Lun Feb 17, 2025 5:54 pm
por Israel Solis
Hola,

Intenta sobrecargar tDataField la clase con esto...

Código: Seleccionar todo

METHOD HasChanged( xValue ) CLASS TDataField

   IF ValType(xValue) = "C"
      xValue := XA_Trim(xValue) // Para que compare SIN espacios finales
   ENDIF

RETURN !VarsEqual( ::InitValue(), xValue )


// May'22: Sobrecarga para evitar un error de ejecución cuando se comparan campos de distinto tipo, oCampo:InitValue() == oCampo:Value  ( caracter == numérico )

#pragma BEGINDUMP

#include "xailer.h"

HB_FUNC_STATIC( VARSEQUAL )
{
   int iResult;

   if( hb_itemCompare( hb_param( 1, HB_IT_ANY ),
                       hb_param( 2, HB_IT_ANY ),
                       HB_TRUE, &iResult ) )
      hb_retl( iResult == 0 );
   else
      hb_retl( HB_FALSE );
}

#pragma ENDDUMP