Página 1 de 1
error GPF (Code = c0000005)
Publicado: Dom Nov 04, 2018 12:58 am
por lilosoft
buenas tardes junto con saludar les comento que me encuentro pasando mis programas a BD.
Para esto instale MARIADB y estoy trabajando con localhost.
El problema que se me presenta es que al agregar registro en una tabla me da un error y no se porque se produce.
Por favor alguien que me pueda ayudar, a continuación adjunto rutina de grabación
STATIC FUNCTION GrabaMensaje( oSqlHisChat, cMensaje, cUsuEnvio)
Local FechaHoy := DToS(Date())
With Object oSqlHisChat
IF :lOpen
:Close()
End IF
:cSelect := "Select * From HISCHAT Where Empresa = 1 and fecha = '"+FechaHoy+"' "
:Open()
:AddNew()
:Empresa := appdata:pcodempre
:Usuario := appdata:pUsuario
:UsuEnvio := cUsuEnvio
:Fecha := Date()
:Hora := Time()
:Mensaje := " " //cMensaje
:Update()
End With
Return Nil
Re: error GPF (Code = c0000005)
Publicado: Dom Nov 04, 2018 4:55 pm
por gabo1
Hola..
Primeramente tienes que crear el datasource MySQL o MariaDB, por lo que veo estas usando ADO
Código: Seleccionar todo
WITH OBJECT AppData:oMySQLDS:= TMySQLDataSource():New() // TMariaDBDataSource():New()
:cHost:= AllTrim(::oSQLEmpresas:servidor_ip)
:cPassword:= AllTrim(::oSQLEmpresas:servidor_password)
:cUser:= AllTrim(::oSQLEmpresas:servidor_user)
:cDataBase:= AllTrim(::oSQLEmpresas:servidor_db)
:nPort:= 3306
:lConnected:= .F.
:lDisplayErrors:= .F.
:Create()
END
Despues que hayas creado el DataSource tienes que asignarselo a cada DataSet que uses
Código: Seleccionar todo
WITH OBJECT ::oSQLProductos
:Close()
:oDataSource:= AppData:oMySQLDS // AQUI ESTA EL DATASOURCE MySQL o MariaDB
:cSelect:= "SELECT * FROM productos"
:lOpen:= .T.
IF ! :lOpen
msgstop("NO SE PUDO ABRIR")
RETURN NIL
ENDIF
END WITH
Saludos!
Re: error GPF (Code = c0000005)
Publicado: Lun Nov 05, 2018 3:58 am
por lilosoft
hola
lo que me indicas ya esta incluido dentro del programa y se encuentra funcionando. El problema se presenta al grabar. de hecha alcanza a grabar el primer registro y al grabar el segundo da el error
adjunto datos.
Re: error GPF (Code = c0000005)
Publicado: Lun Nov 05, 2018 10:28 am
por XeviCOMAS
El formato de MariaDB (SQL) es año/mes/dia
yo tengo esa función... igual hay alguna (seguro que la hay)
como el formato que utilizo en mis aplicaciones es
Set( _SET_DATEFORMAT, "dd/mm/yyyy" )
Código: Seleccionar todo
Function xDateSQL( c )
IF( ValType(c) = "D", c := DToC(c), )
RETURN Right(c,4) +"/"+ SubStr(c,4,2) +"/"+ Left(c,2)
Re: error GPF (Code = c0000005)
Publicado: Mar Nov 06, 2018 4:27 pm
por hgarciaj
Hola yo tuve algunos inconvenientes usando los objetos dataset, así que opté por grabar directo, pero en el caso que muestras, sugiero reemplaces :Addnew() por :fastaddnew() y :update() por :fastupdate() la diferencia es que el primero se usa cuando vas a editar el registro mediante captura y el otro es para grabar directo al dataset. para mi fue más fácil usando la instrucción:
cCodigo:=::oMaria:buildsqlst("Insert into tabla valor1,valor2,valor3 values(?,?,?)",datonumero,datocaracter,datofecha)
::oMaria:execute(cCodigo)
si tu registro tiene más campos debes cuidar los valores por default de cada uno de ellos cuando creas la tabla, si los dejas como default null después tienes problemas cuando los trabajas en xailer.
Re: error GPF (Code = c0000005)
Publicado: Mar Nov 06, 2018 4:30 pm
por hgarciaj
Para Xevi
el formato de para Maria es yyyy-mm-dd y se puede enviar con la función dtosql(date()) si usas el objeto dataset de Xailer hace la conversión automáticamente a partir del cualquier campo fecha
Re: error GPF (Code = c0000005)
Publicado: Vie Nov 09, 2018 12:34 am
por lilosoft
Muchas gracias por las sugerencias probare y veré que sucede
Muchas Gracias