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