https://foro.gambas-es.org/viewtopic.php?f=3&t=172
-----------------------------------
jsoto61
Viernes, 30 Octobre 2009, 18:54

Problema con Réplica BBDD [solucionado]
-----------------------------------
Hola gamberos,...con una sola "r"

Tengo un problema y no acabo de determinar cual es su origen, y por ello, no se ni por donde empezar a analizarlo. Os explico.

Estoy desarrollando una pequeña aplicación para manejar una base de datos que tenemos en la empresa en MySQL y para ello, tengo una réplica de dicha base de datos en mi portátil de casa en el que tengo Ubuntu y el servidor de MySQL en localhost.

En la oficina, el Servidor de MySQL está sobre un servidor de MS Windows 2000 Server en su IP correspondiente.

Voy desarrollando cosas en casa y luego me llevo el ejecutable a la oficina y todo bien en cuanto a los comandos SELECT e INSERT pero ahora llega el momento de modificar registros (UPDATE)  y,... ahí es donde surge mi problema.... En casa se insertan los registros sin ningún problema pero en la ofi no hay "gueb...." a que funcione.

Os pongo el código de lo que me funciona en casa pero no en la ofi.

[code linenumbers=false syntax=gambas]
PUBLIC SUB Btnguardar_Click()

  DIM sFechaMaxima AS String
  DIM sFechaReapertura AS String
  DIM sEstadoAsunto AS String
  DIM sEntregada AS String
  DIM sDesestimada AS String
  DIM sFechaAperturaOferta AS String
  
  sFechaMaxima = Format(FechaMaxPresentacion.Value, "yyyy/mm/dd") 'pongo fecha en formato mysql
  sFechaReapertura = Format(FReapertura.Value, "yyyy/mm/dd") 'pongo fecha en formato mysql
  sFechaAperturaOferta = Format(FEntregaOferta.Value, "yyyy/mm/dd") 'pongo fecha en formato mysql
  IF CheckBoxEstadoAsunto.Value = TRUE THEN 
    sEstadoAsunto = 1
  ELSE 
    sEstadoAsunto = 0
  ENDIF 
  IF CheckBoxEntregaOferta.Value = TRUE THEN 
    sEntregada = 1
  ELSE 
    sEntregada = 0
  ENDIF 
  IF CheckBoxDesestimadaOferta.Value = TRUE THEN 
    sDesestimada = 1
  ELSE 
    sDesestimada = 0
  ENDIF 
  
  ModVariables.sConsulta = "UPDATE simacan.asuntos SET "
  ModVariables.sConsulta &= "Empresa = '" & ComboEmpresaGrupo.Text & "', "
  ModVariables.sConsulta &= "Version = '" & Version.Text & "', "
  ModVariables.sConsulta &= "TituloAsunto = '" & TituloAsunto.Text & "', "
  ModVariables.sConsulta &= "ClienteAsunto = '" & ComboBoxCliente.Text & "', "
  ModVariables.sConsulta &= "PersonaContactoAsunto = '" & ComboBoxContacto.Text & "', "
  ModVariables.sConsulta &= "ReferenciaCliente = '" & ReferenciaCliente.Text & "', "
  ModVariables.sConsulta &= "ResponsableSimaveAsunto = '" & ComboResponsable.Text & "', "
  ModVariables.sConsulta &= "FechaMaximaPresentacion = '" & sFechaMaxima & "', "
  ModVariables.sConsulta &= "ImporteLicitacion = '" & Licitacion.Text & "', "
  ModVariables.sConsulta &= "FReapertura = '" & sFechaReapertura & "', "
  ModVariables.sConsulta &= "EstadoAsunto = '" & sEstadoAsunto & "', "
  ModVariables.sConsulta &= "Entregada = '" & sEntregada & "', "
  ModVariables.sConsulta &= "Desestimada = '" & sDesestimada & "', "
  ModVariables.sConsulta &= "FechaApertura = '" & sFechaAperturaOferta & "', "
  ModVariables.sConsulta &= "CategoriaProyecto = '" & ComboCategoria.Text & "' "
  ModVariables.sConsulta &= "WHERE Asunto = '" & ModVariables.sAsunto & "'"

  ModConexion.rs1 = ModConexion.db.Exec(ModVariables.sConsulta)  
  ME.Close

END
[/code]

El error que me sale en pantalla cuando le doy al boton guardar es:

This application has raised an unexpected error and must abort.
[6] Type mismatch: wanted Float, got Null instead.
FrmEditarAsunto.?.0

¿cual puede ser mi problema?
¿por donde puedo empezar a analizar el mismo?.

Muchísimas gracias por adelantado.


-----------------------------------
soplo
Viernes, 30 Octobre 2009, 20:53

Re: ¿cual Es Mi Problema?
-----------------------------------
¿en qué línea te da ese error?


-----------------------------------
maikl
Viernes, 30 Octobre 2009, 21:02

Re: ¿cual Es Mi Problema?
-----------------------------------
Puede ser que algun campo de la base de datos de la ofi sea de distinto tipo a la de tu casa?
Algún cambio de última hora de esos...


-----------------------------------
jsoto61
Viernes, 30 Octobre 2009, 22:31

Re: ¿cual Es Mi Problema?
-----------------------------------
[quote user="soplo" post="745"]¿en qué línea te da ese error?[/quote]

No lo se porque en la ofi solo tengo el ejecutable, el lunes me llevaré todo el código para ver si saco alguna conclusión.


-----------------------------------
jsoto61
Viernes, 30 Octobre 2009, 22:34

Re: ¿cual Es Mi Problema?
-----------------------------------
[quote user="maikl" post="747"]Puede ser que algun campo de la base de datos de la ofi sea de distinto tipo a la de tu casa?
Algún cambio de última hora de esos...[/quote]

La base de datos de casa es una réplica exacta de la de la ofi, casi a diario hago una back-up y lo restauro en casa. No hay ninguna diferencia.

Ya hace tiempo intenté hacer una aplicación en PHP y me paso lo mismo, de hecho abandoné el proyecto por la desmoralización que me supuso. No sabía que es lo que me pasaba, y me parece que ahora estoy en el mismo punto.


-----------------------------------
soplo
Viernes, 30 Octobre 2009, 22:41

Re: ¿cual Es Mi Problema?
-----------------------------------
También puede ser que ese usuario no tenga permiso de hacer updates a nivel de tabla o campo. Eso explicaría la línea 
[quote]This application has raised an unexpected error and must abort. [/quote]
que es muy rara. Luego acaba saliendo por peteneras.


-----------------------------------
jsoto61
Viernes, 30 Octobre 2009, 22:44

Re: ¿cual Es Mi Problema?
-----------------------------------
[quote user="soplo" post="751"]También puede ser que ese usuario no tenga permiso de hacer updates a nivel de tabla o campo. Eso explicaría la línea 
[quote]This application has raised an unexpected error and must abort. [/quote]
que es muy rara. Luego acaba saliendo por peteneras.[/quote]

Voy a comprobar este aspecto, aunque dudo que este sea el origen, ya que actualmente dicha base de datos está manejada por una aplicación desarrollada en Access que funciona perfectamente y el usuario que utilizo es el mismo. De todas formas haré algunas comprobaciones.


-----------------------------------
jsoto61
Sabado, 31 Octobre 2009, 00:02

Nuevos Datos
-----------------------------------
Acabo de hacer algo que me ha dejado pasmao

Hasta ahora, lo que hacía con la copia de back-up de la ofi era restaurar en casa, pero sobre la que ya tengo desde hace la torta. Ahora lo que he hecho es borrar la de casa y crearle de nuevo con los datos traidos de la ofi y .....eureka, ahora me pasa lo mismo en casa, por lo que maikl tenía razón.

Aunque no me esté funcionando esta nueva situación me tranquiliza un poco, ya que se que puede llegar a funcionar y ahora los efectos son iguales en los dos escenarios.

Gracias por todo.


-----------------------------------
maikl
Sabado, 31 Octobre 2009, 01:01

Re: ¿cual Es Mi Problema?
-----------------------------------
Ánimo, que casi lo tienes!


-----------------------------------
shordi
Domingo, 01 Noviembre 2009, 19:26

Re: ¿cual Es Mi Problema?
-----------------------------------
¿Podrías poner la definición de la tabla? A mí me parece un problema de conversión de tipos. Si el campo, por ejemplo, ImporteLicitacion que tienes al que le asignas un .text de la pantalla es un tipo float en la base de datos y luego dejas el campo vacio a la hora de actualizar Es decir, el usuario no teclea nada en ese campo, puede que intentes insertar un null en el tipo float y cosas así.
Asegúrate que todos los campos de la tabla no admiten null en la base de datos (o que sí lo admiten) o inserta una función con valores por defecto para todos los campos antes de editar, como 0 a los numéricos 01/01/01 a las fechas y cosas por el estilo.


-----------------------------------
jsoto61
Lunes, 02 Noviembre 2009, 23:55

Re: ¿cual Es Mi Problema?
-----------------------------------
[quote user="shordi" post="794"]¿Podrías poner la definición de la tabla? A mí me parece un problema de conversión de tipos. Si el campo, por ejemplo, ImporteLicitacion que tienes al que le asignas un .text de la pantalla es un tipo float en la base de datos y luego dejas el campo vacio a la hora de actualizar Es decir, el usuario no teclea nada en ese campo, puede que intentes insertar un null en el tipo float y cosas así.
Asegúrate que todos los campos de la tabla no admiten null en la base de datos (o que sí lo admiten) o inserta una función con valores por defecto para todos los campos antes de editar, como 0 a los numéricos 01/01/01 a las fechas y cosas por el estilo.[/quote]

Efectivamente, ese era el problema, para que funcionara he tenido que cambiar los tipo de algunos controles a .value en lugar de .text y ...resuelto.


-----------------------------------
shordi
Martes, 03 Noviembre 2009, 00:18

Re: ¿cual Es Mi Problema?
-----------------------------------
Conejudo. Cambia el título del post por algo mas significativo como "Problemas con bases duplicadas" o algo así y añádele "[Solucionado]" al final. Que así queda de referencia para posteriores consultas.


