Amigos,
Com a versão ANTIGA da TDOLPHIN _ NULL funcionavam perfeitamente.
Com a versão NOVA da TDOLPHIN _ NULL estão me gerando problemas.
Ex:
TABELA Clientes - Campo: CODIGO
NULL
oQry := oServer:Query( "SELECT CODIGO FROM clientes" )
OQry:codigo -> Valtype -> "C"
deveria ser NÚMERICO.
Como resolver este problema?
Versão atual TDOLPHIN - Campo Null
- carlos vargas
- Posts: 1421
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Versão atual TDOLPHIN - Campo Null
please, replace in tdolqry.prg, recompile and test.
Code: Select all
METHOD GetRow( nRow ) CLASS TDolphinQry
LOCAL cType, uValue, cField
LOCAL cCol
LOCAL nIdx
LOCAL aRow
LOCAL hRow, uItem, aStructure, nPad
DEFAULT nRow TO ::nRecNo
IF ::hResult <> NIL
DO CASE
CASE ::nRecCount < 1
::lBof := .t.
::lEof := .t.
::nRecNo := 1
CASE nRow > 0 .and. nRow <= ::nRecCount
::lBof := .f.
::lEof := .f.
::nRecNo := Max( nRow, 1 )
CASE nRow > ::nRecCount
::lBof := .f.
::lEof := .t.
::nRecNo := ::nRecCount
CASE nRow < 1
::lBof := .t.
::lEof := .f.
::nRecNo := 1
ENDCASE
nRow := ::nRecNo
MySqlDataSeek( ::hResult, nRow - 1 )
aRow := MySqlFetchRow( ::hResult )
::aRowOriginal := aRow
#ifndef USE_HASH
::aRow := Array( Len( aRow ) )
::aOldRow := Array( Len( aRow ) )
#endif /*USE_HASH*/
//fill ::aRow Info
IF !HB_IsNil( aRow ) .AND. ::nRecCount > 0
// Convert answer from text field to correct clipper types
FOR EACH cField IN aRow
#ifdef __XHARBOUR__
nIdx := HB_EnumIndex()
#else
nIdx := cField:__EnumIndex()
#endif
uValue := ::VerifyValue( nIdx, cField )
::SetData( nIdx, uValue )
NEXT
ELSE
IF useClipperDefaultValue()
aStructure := ::aStructure
FOR EACH uItem IN aStructure
#ifdef __XHARBOUR__
nIdx := HB_EnumIndex()
#else
nIdx := uItem:__EnumIndex()
#endif
cType := uItem[ MYSQL_FS_CLIP_TYPE ]
SWITCH cType
CASE "M"
// we can not use PadR in memo field
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := uItem[ MYSQL_FS_DEF ]
ELSE
uValue := ""
ENDIF
EXIT
CASE "C"
IF D_SetPadRight()
nPad := Min( IIf( uItem[ MYSQL_FS_MAXLEN ] > uItem[ MYSQL_FS_LENGTH ],;
uItem[ MYSQL_FS_MAXLEN ], uItem[ MYSQL_FS_LENGTH] ), MAX_BLOCKSIZE )
ELSE
nPad := 0
ENDIF
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := PadR( uItem[ MYSQL_FS_DEF ], Max( Len( uItem[ MYSQL_FS_DEF ] ), nPad ) )
ELSE
uValue := Space( nPad )
ENDIF
EXIT
CASE "N"
CASE "I"
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := Val( uItem[ MYSQL_FS_DEF ] )
ELSE
uValue := 0
ENDIF
EXIT
CASE "L"
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := ( uItem[ MYSQL_FS_DEF ] == "1" )
ELSE
uValue := .f.
ENDIF
EXIT
CASE "D"
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := SqlDate2Clip( uItem[ MYSQL_FS_DEF ] )
ELSE
uValue := CToD("")
ENDIF
EXIT
#ifdef __XHARBOUR__
DEFAULT
#else
OTHERWISE
#endif
uValue := NIL
END
::SetData( nIdx, uValue )
NEXT
ENDIF
ENDIF
#ifndef NOINTERNAL
ELSE
::oServer:nInternalError := ERR_FAILEDGETROW
::nRecNo := 0
::CheckError()
#endif
ENDIF
RETURN ::nRecNo
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
Re: Versão atual TDOLPHIN - Campo Null
Carlos,
muito obrigado por responder.
Meu amigo, eu tentei localizar a diferença entre os dois códigos(CARLOS e bitbucket.org). Eu não achei diferença, veja:
https://bitbucket.org/danielgarciagil/t ... /downloads
muito obrigado por responder.
Meu amigo, eu tentei localizar a diferença entre os dois códigos(CARLOS e bitbucket.org). Eu não achei diferença, veja:
https://bitbucket.org/danielgarciagil/t ... /downloads
please, replace in tdolqry.prg, recompile and test.
METHOD GetRow( nRow ) CLASS TDolphinQry
LOCAL cType, uValue, cField
LOCAL cCol
LOCAL nIdx
LOCAL aRow
LOCAL hRow, uItem, aStructure, nPad
DEFAULT nRow TO ::nRecNo
IF ::hResult <> NIL
DO CASE
CASE ::nRecCount < 1
::lBof := .t.
::lEof := .t.
::nRecNo := 1
CASE nRow > 0 .and. nRow <= ::nRecCount
::lBof := .f.
::lEof := .f.
::nRecNo := Max( nRow, 1 )
CASE nRow > ::nRecCount
::lBof := .f.
::lEof := .t.
::nRecNo := ::nRecCount
CASE nRow < 1
::lBof := .t.
::lEof := .f.
::nRecNo := 1
ENDCASE
nRow := ::nRecNo
MySqlDataSeek( ::hResult, nRow - 1 )
aRow := MySqlFetchRow( ::hResult )
::aRowOriginal := aRow
#ifndef USE_HASH
::aRow := Array( Len( aRow ) )
::aOldRow := Array( Len( aRow ) )
#endif /*USE_HASH*/
//fill ::aRow Info
IF !HB_IsNil( aRow ) .AND. ::nRecCount > 0
// Convert answer from text field to correct clipper types
FOR EACH cField IN aRow
#ifdef __XHARBOUR__
nIdx := HB_EnumIndex()
#else
nIdx := cField:__EnumIndex()
#endif
uValue := ::VerifyValue( nIdx, cField )
::SetData( nIdx, uValue )
NEXT
ELSE
IF useClipperDefaultValue()
aStructure := ::aStructure
FOR EACH uItem IN aStructure
#ifdef __XHARBOUR__
nIdx := HB_EnumIndex()
#else
nIdx := uItem:__EnumIndex()
#endif
cType := uItem[ MYSQL_FS_CLIP_TYPE ]
SWITCH cType
CASE "M"
// we can not use PadR in memo field
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := uItem[ MYSQL_FS_DEF ]
ELSE
uValue := ""
ENDIF
EXIT
CASE "C"
IF D_SetPadRight()
nPad := Min( IIf( uItem[ MYSQL_FS_MAXLEN ] > uItem[ MYSQL_FS_LENGTH ],;
uItem[ MYSQL_FS_MAXLEN ], uItem[ MYSQL_FS_LENGTH] ), MAX_BLOCKSIZE )
ELSE
nPad := 0
ENDIF
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := PadR( uItem[ MYSQL_FS_DEF ], Max( Len( uItem[ MYSQL_FS_DEF ] ), nPad ) )
ELSE
uValue := Space( nPad )
ENDIF
EXIT
CASE "N"
CASE "I"
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := Val( uItem[ MYSQL_FS_DEF ] )
ELSE
uValue := 0
ENDIF
EXIT
CASE "L"
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := ( uItem[ MYSQL_FS_DEF ] == "1" )
ELSE
uValue := .f.
ENDIF
EXIT
CASE "D"
IF !HB_IsNil( uItem[ MYSQL_FS_DEF ] )
uValue := SqlDate2Clip( uItem[ MYSQL_FS_DEF ] )
ELSE
uValue := CToD("")
ENDIF
EXIT
#ifdef __XHARBOUR__
DEFAULT
#else
OTHERWISE
#endif
uValue := NIL
END
::SetData( nIdx, uValue )
NEXT
ENDIF
ENDIF
#ifndef NOINTERNAL
ELSE
::oServer:nInternalError := ERR_FAILEDGETROW
::nRecNo := 0
::CheckError()
#endif
ENDIF
RETURN ::nRecNo
Re: Versão atual TDOLPHIN - Campo Null
Hola
Me pasa igual con la última versión de dolphin, tambien falla con mysql embebido que cuando se produce un error de mysql, la aplicación se cierra, no captura el error.
Esperemos que el maestro Daniel corriga los errores.
Un saludo
Me pasa igual con la última versión de dolphin, tambien falla con mysql embebido que cuando se produce un error de mysql, la aplicación se cierra, no captura el error.
Esperemos que el maestro Daniel corriga los errores.
Un saludo
Re: Versão atual TDOLPHIN - Campo Null
Prueba reemplazando el metodo VerifyValue en tdolqry.prg:
Saludos,
Code: Select all
//-------------------------------------------------//
METHOD VerifyValue( nIdx, cField ) CLASS TDolphinQry
LOCAL cType, uValue
LOCAL nPad
cType := ::aStructure[ nIdx ][ MYSQL_FS_CLIP_TYPE ] //, ::aStructure[ nIdx ][ MYSQL_FS_TYPE ]
SWITCH cType
CASE "L"
IF cField == NIL .OR. Empty(cField)
uValue := If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_DEF ] ), ::aStructure[ nIdx ][ MYSQL_FS_DEF ],.F.)
ELSE
uValue := If( ValType( cField ) == "L", cField, !( Val( cField ) == 0 ) )
ENDIF
EXIT
CASE "N"
IF cField == NIL .OR. Empty(cField)
uValue := If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_DEF ] ),::aStructure[ nIdx ][ MYSQL_FS_DEF ], 0 )
ELSE
uValue := If( ValType( cField ) == "N", cField, Val( cField ) )
ENDIF
EXIT
CASE "D"
IF Empty( cField ) .OR. Empty(cField)
uValue := If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_DEF ] ), ::aStructure[ nIdx ][ MYSQL_FS_DEF ] ,CToD( "" ) )
ELSE
uValue := If( ValType( cField ) == "D", cField, SqlDate2Clip( cField ) )
ENDIF
EXIT
CASE "M"
// we can not use PadR in memo field
IF ( cField == NIL .OR. Empty(cField) )
uValue := ""
ELSE
uValue := cField
ENDIF
EXIT
CASE "T"
CASE "C"
IF D_SetPadRight()
nPad := Min( If( ::aStructure[ nIdx ][ MYSQL_FS_MAXLEN ] > ::aStructure[ nIdx ][ MYSQL_FS_LENGTH ],;
::aStructure[ nIdx ][ MYSQL_FS_MAXLEN ], ::aStructure[ nIdx ][ MYSQL_FS_LENGTH] ), MAX_BLOCKSIZE )
ELSE
nPad := 0
ENDIF
IF ( cField == NIL .OR. Empty(cField) )
uValue := PadR(If( IS_NOT_NULL( ::aStructure[ nIdx ][ MYSQL_FS_DEF ] ), ::aStructure[ nIdx ][ MYSQL_FS_DEF ], "" ),nPad)
ELSE
uValue := PadR( cField, Max( Len( cField ), nPad ) )
ENDIF
EXIT
#ifdef __XHARBOUR__
DEFAULT
#else
OTHERWISE
#endif
// uValue = cField
ENDSWITCH
RETURN uValue
Nicanor Martinez M.
Auditoria y Sistemas Ltda.
MicroExpress Ltda.
FW + FWH + XHARBOUR + HARBOUR + PELLES C + XDEVSTUDIO + XEDIT + BCC + VC_X86 + VCC_X64 + MINGW + R&R Reports + FastReport + Tdolphin + ADO + MYSQL + MARIADB + ORACLE
nnicanor@yahoo.com
Auditoria y Sistemas Ltda.
MicroExpress Ltda.
FW + FWH + XHARBOUR + HARBOUR + PELLES C + XDEVSTUDIO + XEDIT + BCC + VC_X86 + VCC_X64 + MINGW + R&R Reports + FastReport + Tdolphin + ADO + MYSQL + MARIADB + ORACLE
nnicanor@yahoo.com
Re: Versão atual TDOLPHIN - Campo Null
Gracias Nicanor,
vou testar!
vou testar!