Page 1 of 1

error GPF (Code = c0000005)

Posted: Sun Nov 04, 2018 12:58 am
by 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)

Posted: Sun Nov 04, 2018 4:55 pm
by gabo1
Hola..
Primeramente tienes que crear el datasource MySQL o MariaDB, por lo que veo estas usando ADO

Code: Select all

  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

Code: Select all

  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)

Posted: Mon Nov 05, 2018 3:58 am
by 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)

Posted: Mon Nov 05, 2018 10:28 am
by 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" )

Code: Select all

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)

Posted: Tue Nov 06, 2018 4:27 pm
by 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)

Posted: Tue Nov 06, 2018 4:30 pm
by 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)

Posted: Fri Nov 09, 2018 12:34 am
by lilosoft
Muchas gracias por las sugerencias probare y veré que sucede
Muchas Gracias