Power Builder - DATETIME en SQLServer 2012 y PowerBuilder 12.6 - Migracion de PowerBuilder 8.0 a Powerbuilder 12.6

 
Vista:
sin imagen de perfil

DATETIME en SQLServer 2012 y PowerBuilder 12.6 - Migracion de PowerBuilder 8.0 a Powerbuilder 12.6

Publicado por Alberto (16 intervenciones) el 02/03/2017 19:43:21
DATETIME en SQLServer 2012 y PowerBuilder 12.6
Migracion de PowerBuilder 8.0 a Powerbuilder 12.6
Necesito que me ayuden estoy migrando de powerbuilder 8.0 a powerbuilder 12.6
Después de que abrí el proyecto en la versión 12.6(ya descargué el crack y está liberado) me convirtió algunas funciones automáticamente como LEN a LENA, MID a MIDA, etc.
El manejador de base de datos es SQL Server 2012 y su intercalación es SQL_Latin1_General_CP850_CI_AI en el idioma Español .
En powerbuilder utilizo el perfil de base de datos Ado .Net, y de Namespace: System.Data.SqlClient y le declaré los formatos para las fechas
El código es el siguiente:

1
2
3
4
5
6
7
8
9
SQLCA.DBMS = "ADO.Net"
SQLCA.LogPass = "Contr4s3N1a"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Namespace='System.Data.SqlClient',DataSource='Compu',Database='BaseDatos'"+ &
",DateFormat='dd/mm/yyyy',DateTimeFormat='dd/mm/yyyy hh:mi:ss.fff',TimeFormat='hh:mi:ss'"
CONNECT USING SQLCA;
// Se abre la ventana
open( v_principal );

El problema que tengo es que en la versión 12.6 cuando intento modificar algún dato en un campo de tipo DATETIME en cualquier tabla me aparece el sig. Error:
Index #0 Source; .Net SqlClient Data Provider Message: Sintaxis incorrecta cerca de '00'. Number: 102 State: 1
En el código primero en una variable STRING cuyo formato es “dd/mm/yyyy” se almacena la fecha
lsFechaCadena = "28/02/2017" // Se ha intentado también con el formato "2017-02-28"
En una variable DATE se pasa el contenido de la variable STRING a través de un cast.
lfFechaAux = DATE( lsFechaCadena )
En una variable DATETIME se pasa el contenido de la variable DATE a través de un cast.
lfFecha = DATETIME( lfFechaAux )
Se insertan los campos en una tabla de la base de datos, uno de los campos es de tipo DATETIME (de SQLServer) y su valor es almacenado a través de la variable de tipo DATETIME(de Powerbuilder). En el script del INSERT se almacena la variable DATIME, se ejecuta y sale el error anteriormente mencionado.
El código completo de la ventana en su evento open es:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
LONG llEdad
DECIMAL ldMonto
STRING lsNombre
DATETIME lfFecha
 
STRING lsFechaCadena
DATE lfFechaAux
 
llEdad = 44;
ldMonto = 2234.89
lsNombre = "nombre"
 
lsFechaCadena = "28/02/2017" // "2017-02-28"
lfFechaAux = DATE( lsFechaCadena)
lfFecha = DATETIME( lfFechaAux  )
		MessageBox(""," FechaAux:      "+STRING(lfFechaAux)+char(13)+char(13)+ &
		", Fecha:            "+STRING(lfFecha)+ char(13)+char(13) )
 
INSERT INTO tabla VALUES( :llEdad, :ldMonto, :lsNombre, :lfFecha );
 
IF SQLCA.SQLCODE < 0 THEN
		MessageBox("Error", "Error al guardar, "+char(13)+char(13)+ &
		" FechaAux:      "+STRING(lfFechaAux)+char(13)+char(13)+ &
		", Fecha:            "+STRING(lfFecha)+ char(13)+char(13)+ &
		", Error: " +char(13)+char(13)+ SQLCA.SQLERRTEXT )
				close(this);
			RETURN -1
	ELSE
		MessageBox("EXCELENTE", "TODO BIEN" )
				close(this);
			RETURN 1
END IF
El mensaje de error que sale es:
Error al guardar,
FechaAux: 28/02/2017
, Fecha: 28/02/2017 00:00:00
,Error:
Index #0 Source; .Net SqlClient Data Provider Message: Sintaxis incorrecta cerca de '00'. Number: 102 State: 1

Para hacer la ejecución correcta en lugar de incluir la variable DATETIME en la sentencia INSERT se debe incluir la variable STRING y si lo almacena en el campo de la tabla y todo bien.
Pero resulta que el proyecto que debo migrar tiene demasiadas líneas de código en las cuales se insertan o actualizan campos de tipo DATETIME debido a que es el código de un ERP.
Necesito saber cómo se debe configurar correctamente una base de datos para que ejecute las sentencias INSERT o UPDATE sin necesidad de utilizar la variable STRING en cada sentencia INSERT o UPDATE de un campo DATETIME.
Yo digo que se debe poder porque es obvio, el tipo de datos DATETIME de una variable de PowerBuilder es para que se utilice en sentencias SQL de un manejador de base de datos, y también coincide con el tipo de dato del campo de la tabla el cual es DATETIME de SQLServer.





También he utilizado ADO.Net cuyo namespace es OLE DB:

SQLCA.DBMS = "ADO.Net"
SQLCA.LogPass = " Contr4s3N1a "
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Namespace='System.Data.OleDb',Provider='SQLOLEDB',DataSource='Compu',Database='BaseDatos',DateFormat='dd/mm/yyyy',DateTimeFormat='dd/mm/yyyy hh:mi:ss.fff',TimeFormat='hh:mi:ss'"
CONNECT USING SQLCA;
Ahí el error es el siguiente:
FechaAux: 28/02/2017
, Fecha: 28/02/2017 00:00:00
, Error:
Index #0 Source; Message: Sintaxis incorrecta cerca de '00'. NativeError. 102 Source: Microsoft OLE DB Provider for SQL Server SQLState: 42000


También he utilizado SNC SQL Native Client(OLE DB)
Al crear el perfil seleccioné en el parámetro Provider: SQLNCLI11( SNC 11.0 for SQL Server 2012) obviamente porque la versión del SQLServer es 2012
SQLCA.DBMS = "SNC SQL Native Client(OLE DB)"
SQLCA.LogPass = " Contr4s3N1a "
SQLCA.ServerName = "Compu"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Database='BaseDatos',Provider='SQLNCLI11',DateFormat='dd/mm/yyyy',DateTimeFormat='dd/mm/yyyy hh:mi:ss.fff',TimeFormat='hh:mi:ss'"
CONNECT USING SQLCA;
El error usando SNC SQL Native Client es:
FechaAux: 28/02/2017
, Fecha: 28/02/2017 00:00:00
, Error:
SQLState: 42000
Microsoft SQL Server Native Client 11.0
Sintaxis incorrecta cerca de '00'.

En la versión 8.0 si lo ejecutaba bien pero en la versión 12.5 o 12.6 no lo ejecuta hay algo que me falta por favor ayúdenme.
Alguna idea de como solucionarlo??
Espero y me puedan ayudar cuanto antes porque es urgente, gracias!.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

DATETIME en SQLServer 2012 y PowerBuilder 12.6 - Migracion de PowerBuilder 8.0 a Powerbuilder 12.6

Publicado por powerbuilder (2 intervenciones) el 03/03/2017 12:23:07
serias tan amable de pasar el link del crak de pn 12-6
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DATETIME en SQLServer 2012 y PowerBuilder 12.6 - Migracion de PowerBuilder 8.0 a Powerbuilder 12.6

Publicado por PowerBuilder (2 intervenciones) el 06/03/2017 16:44:51
gracias vere si veo algo de tu consulta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DATETIME en SQLServer 2012 y PowerBuilder 12.6 - Migracion de PowerBuilder 8.0 a Powerbuilder 12.6

Publicado por francisco portales (214 intervenciones) el 09/04/2019 00:24:59
No esta disponible el link....tu tendras elgrack de pb 12.6

podrias enviarmelo.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 11
Ha disminuido su posición en 4 puestos en Power Builder (en relación al último mes)
Gráfica de Power Builder

DATETIME en SQLServer 2012 y PowerBuilder 12.6 - Migracion de PowerBuilder 8.0 a Powerbuilder 12.6

Publicado por AUGUSTO MERCHÁN (14 intervenciones) el 06/04/2019 15:57:58
Hola Alberto, hoy, casi 2 años después de tu pregunta (de la cual no veo que hayas obtenido por este foro una guía), tengo el mismo problema, migrando una aplicación muy grande, de 6.5 a 11.5. Pudiste resolver el problema? O encontraste alguna alternativa "viable"?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar