Conversión varchar en datetime produjo valor fuera intervalo

Conversión varchar en datetime produjo valor fuera intervalo

Postby gdeteran » Tue Dec 13, 2022 4:08 pm

Hola, estoy reconstruyendo mi base de datos despues de la visita de un Ramsonware y me está dando este error que antes no sucedia.
Lo extraño es que si acceso la base de datos directamente en el PC donde está el servidor, no sucede, sin embargo si lo hago a través de la red local se produce el error.
La BD está en MSSQLEXPRESS.
Agradezco de antemano quien me pueda ayudar.



Application
===========
Path and name: C:\SIS\DesaFW\FactNew\FactNew.exe (32 bits)
Size: 5,706,240 bytes
Compiler version: Harbour 3.2.0dev (r2008190002)
FiveWin version: FWH 21.02
C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
Windows version: 10.0, Build 22621

Time from start: 0 hours 0 mins 19 secs
Error occurred at: 13/12/2022, 12:32:46
Error description: (DOS Error -2147352567) WINOLE/1007 La conversión del tipo de datos varchar en datetime produjo un valor fuera de intervalo. (0x80040E07): Microsoft OLE DB Driver for SQL Server
Args:
[ 1] = C UPDATE PAGBORR SET PgTipo = 'EF', PgFecha = '2022-12-13', PgHora = '12:32', PgFCobr = '2022-12-13', PgMonto = 100.00, PgSerie = '', PgBanco = '', PgPlaza = '', PgCuent = '' WHERE Id = 120

Stack Calls
===========
Called from: => TOLEAUTO:EXECUTE( 0 )
Called from: C:\SIS\DesaFW\FactNew\BORRADOR.PRG => GRABACAJA( 3439 )
Called from: C:\SIS\DesaFW\FactNew\BORRADOR.PRG => PRINTDOCTO( 3280 )
Called from: C:\SIS\DesaFW\FactNew\BORRADOR.PRG => (b)INCAJABORR( 3258 )
Called from: .\source\classes\BUTTON.PRG => TBUTTON:CLICK( 179 )
Called from: .\source\classes\CONTROL.PRG => TBUTTON:HANDLEEVENT( 1781 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3559 )
Called from: => SENDMESSAGE( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:COMMAND( 433 )
Called from: => TWINDOW:HANDLEEVENT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 1140 )
Called from: => DIALOGBOX( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 304 )
Called from: C:\SIS\DesaFW\FactNew\BORRADOR.PRG => INCAJABORR( 3263 )
Called from: C:\SIS\DesaFW\FactNew\BORRADOR.PRG => INGPAGO( 2364 )
Called from: C:\SIS\DesaFW\FactNew\BORRADOR.PRG => (b)INIDIALOG( 1007 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 713 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 999 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1817 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2051 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3559 )
Called from: => DIALOGBOX( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 304 )
Called from: C:\SIS\DesaFW\FactNew\BORRADOR.PRG => BORRADOR( 596 )
Called from: C:\SIS\DesaFW\FactNew\FACTNEW.PRG => (b)MAIN( 518 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 713 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 999 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1817 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 2051 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3559 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1097 )
Called from: C:\SIS\DesaFW\FactNew\FACTNEW.PRG => MAIN( 542 )

System
======
CPU type: 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz 2304 Mhz
Hardware memory: 7830 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Windows total applications running: 6
1 ,
2 , C:\WINDOWS\System32\SHELL32.dll
3 , C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22621.608_none_f0f1837
4 Conmutación de tareas, C:\SIS\DesaFW\FactNew\FactNew.exe
5 DDE Server Window, C:\WINDOWS\System32\OLE32.DLL
6 GDI+ Window (FactNew.exe), C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.22621.819_none_21dd7a56301966e



Esta es la instrucción donde se produce el error :

Code: Select all  Expand view  RUN

cSql    :=  "UPDATE PAGBORR SET "
cSql    +=  "PgTipo = '" + aPAGBORR[nIndM, 1] + "', "                           // PgTipo
cSql    +=  "PgFecha = "  + FW_ValToSQL(aPAGBORR[nIndM, 3]) + ", "  // PgFecha
cSql    +=  "PgHora = '" + SUBSTR(TIME(),1,5) + "', "                           // PgHora
cSql    +=  "PgFCobr = "  + FW_ValToSQL(aPAGBORR[nIndM, 3]) + ", "      // PgFCobr
cSql    +=  "PgMonto = "  + STR(aPAGBORR[nIndM, 2]) + ", "              // PgMonto
cSql    +=  "PgSerie = '" + RTRIM(aPAGBORR[nIndM, 4]) + "', "           // PgSerie
cSql    +=  "PgBanco = '" + RTRIM(aPAGBORR[nIndM, 5]) + "', "           // PgBanco
cSql    +=  "PgPlaza = '" + RTRIM(aPAGBORR[nIndM, 6]) + "', "           // PgPlaza
cSql    +=  "PgCuent = '" + RTRIM(aPAGBORR[nIndM, 7]) + "' "            // PgCuent
cSql    += "WHERE Id = " + STR(aPAGBORR[nIndM, 8])              // Id
oCn:Execute( cSql )
 
Saludos,
Gonzalo
Puerto Montt - CHILE
FWH 22.12 - Harbour 3.2.0dev (r2008190002) - Borland/Embarcadero C++ 7.0(32-bit)
User avatar
gdeteran
 
Posts: 115
Joined: Fri Oct 14, 2005 7:10 pm
Location: Puerto Montt - CHILE

Re: Conversión varchar en datetime produjo valor fuera intervalo

Postby Antonio Linares » Tue Dec 13, 2022 9:11 pm

Estimado Gonzalo,

Mira lo que responde chatGPT:
https://chat.openai.com/chat

Como se soluciona este error: La conversión del tipo de datos varchar en datetime produjo un valor fuera de intervalo


Este error se produce cuando se intenta convertir un valor de tipo varchar (cadena de caracteres) en un valor de tipo datetime (fecha y hora), pero el valor en la cadena de caracteres no es una fecha y hora válidas. Para solucionar este error, debe asegurarse de que la cadena de caracteres que está intentando convertir contenga una fecha y hora válidas en un formato reconocido por SQL Server. Por ejemplo, si la cadena de caracteres es '2022-12-13', debe asegurarse de que está en el formato 'yyyy-mm-dd', donde yyyy es el año con cuatro dígitos, mm es el mes con dos dígitos y dd es el día con dos dígitos. Una vez que haya asegurado que la cadena de caracteres tiene una fecha y hora válidas en un formato reconocido, puede intentar convertirla nuevamente en un valor de tipo datetime utilizando la función de conversión de SQL Server adecuada, como CONVERT o TRY_CONVERT.


Puedes preguntarle varias veces lo mismo y te irá dando distintos resultados, con ejemplos, etc:
Asegurarse de que el valor que se está intentando convertir tenga un formato válido para datetime. Por ejemplo, si se está intentando convertir el valor '2022-12-13', asegurarse de que esté en el formato correcto, es decir, 'yyyy-mm-dd'.

Utilizar la función TRY_CONVERT en lugar de CONVERT para intentar realizar la conversión. La función TRY_CONVERT intentará realizar la conversión, pero si no es posible, devolverá un valor NULL en lugar de generar un error.



Este error se produce cuando se intenta convertir un valor de tipo varchar a un tipo datetime y el valor del varchar no está en un formato de fecha y hora válido. Para solucionar este problema, se puede utilizar la función CONVERT de SQL junto con un formato de fecha y hora válido para realizar la conversión. Por ejemplo, si se quiere convertir el valor '2022-12-13' al tipo datetime, se podría usar la siguiente consulta:

Copy code
SELECT CONVERT(datetime, '2022-12-13', 120)
En este caso, el formato de fecha y hora que se está utilizando es el número 120, que indica que el valor a convertir está en el formato 'YYYY-MM-DD'. Si el valor del varchar está en un formato diferente, se deberá utilizar un formato de fecha y hora diferente en la función CONVERT para que la conversión sea exitosa.
regards, saludos

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

Re: Conversión varchar en datetime produjo valor fuera intervalo

Postby gdeteran » Wed Dec 14, 2022 11:18 pm

Muchas gracias Antonio, resolví el problema, faltaban algunos atributos que asignar a la base de dato.
Saludos,
Gonzalo
Puerto Montt - CHILE
FWH 22.12 - Harbour 3.2.0dev (r2008190002) - Borland/Embarcadero C++ 7.0(32-bit)
User avatar
gdeteran
 
Posts: 115
Joined: Fri Oct 14, 2005 7:10 pm
Location: Puerto Montt - CHILE


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 48 guests