Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

hosting en interdominios
1.300 lecturas y 14 respuestas
  • Boca de Pez Boca de Pez
    6

    VISUAL BASIC 6.0 + BBDD longitud 0 o campos nulos

    Bueno yo a lo mio... Sigo haciendo el programa de la empresa y aunque cada vez mejoro un poco la version a ratos me pasan cosas como estas... :

    Siempre cuando abro el proyecto.vbp y no hay nada en mi base de datos me pone ERROR BOF Y EOF SON IGUALES que lo he solventado con un if rst.eof and rst.bof then base de datos vacia, rellenela end if ( alguna otra forma mas limpia que conozcais? aunque bueno esta opcion me ha gustado bastante.. )

    aora me vienen los problemas de verdad

    Cuando se abre me muestra un monton de datos del usuario entonces ANTES le daba a un boton modificar que me permite escribir en los textbox ( los tengo enabled = false ) y escribia en los campos que me faltaban por rellenar daba a guardar y guardaba los cambios, los nuevos campos rellenos y si abia alguno sin poner todavia lo dejaba y no me saltaba error..

    pero e añadido unos campos nuevos a mi tabla porque necesitamos recojer mas datos y e ido a probar el guardar y nada me saltaba error en la nueva linea de comando aciendo referencia justo a los nuevos campos que e exo... e pensado k seria un error de los campos, e ido a mirarlo al access y exacto , en los campos ponia que no podia ser una linea de texto vacia, es decir "", encontra de los otros mas antiguos que si que los ponia y bueno entonces he cambiado todos los campos nuevos con esa opcion y voy a guardar y ERROR pero ahora el error no esta en ese primer campo nuevo sino en los campos viejos que antes funcionaban bien :S:S Todo sin ninguna explicacion aparente... He estado comprobando y comprobando y bueno los campos tienen las mismas caracteristicas ( todos de tipo texto con 250 caracteres por defecto que ponga "" y que se pueda longitud 0 , es decir "" , pero ni aun asi me lo coje...

    Un poco de lio igual al explicarme que me exo pero espero que me podais decir porque no puedo guardar en mi base de datos campos que esten vacios por que en ese momento se desconocen los datos.

    Gracias

    Este tema lleva más de 6 meses inactivo. Es recomendable que abras un nuevo tema para retomar la conversación.
    • Boca de Pez Boca de Pez
      6

      Lo siento, pero no te he entendido. ¿que quieres hacer?.…

      Lo siento, pero no te he entendido. ¿que quieres hacer?. Resume. Y, por favor, intenta pasar un corrector ortográfico antes de enviar un mensaje al foro, estás asesinando mediante tortuosas técnicas a la señora ortografía.

      • Boca de Pez Boca de Pez
        0

        lo siento por no saber explicarme no porque escriba mal ya…

        lo siento por no saber explicarme no porque escriba mal ya que es un foro no un documento importante... yo y la gran mayoria de personas cuando cojemos notas para lo que sea haces eso.. cojer notas apuntar un numero una palabra algo con lo que te acuerdes no te apuntas todo el parrafon bien explicado... pues aqui parecido... estoy en el trabajo con prisa y con ganas de seguir avanzando y no quiero perder tiempo en escribir todas las letras ya que asi tardo unos segundos mas ( escribo en mas de un foro casi a la vez y cosas distintas que no puedo cortar y pegar para ganar tiempo ).

        A lo que voy que justo ahora lo estoy probando otra vez y al menos he conseguido que los campos viejos de mi base de datos funcionen BIEN.

        Mira estoy en el modo INTERRUPCION de visual basic 6.0 y me pongo encima de estas dos instrucciones :

        txtProvincia.Text = rst.Fields("PROVINCIA") y sale : txtProvincia.text = ""

        txtReglada.text = rst.Fields("REGLADA") y sale : ERROR VALOR NULO ..

        en los dos casos tengo mi caja de texto sin rellenar.

        en la base de datos , en access, tengo las opciones de longitud 0 en todos los campos.

        porque me da error en REGLADA y en PROVINCIA QUE HAGO LO MISMO MISMO me pone "" eso es lo que me gustaria saber... Igual influye que tenga los datos en un SSTab donde en la primera hoja me funciona todo guay pero en la segunda hoja es donde me empiezan a dar los problemas ( tambien hize la primera hoja hace 1 semana y he estado trabajando en ella esta semana y hoy he añadido los campos y las cajas de texto a la segunda hoja )

        Un saludo y GRACIAS POR ADELANTADO

        • Boca de Pez Boca de Pez
          6

          Hombre de dios ¿has hecho un next?. Y yo en mis notas escribo…

          Hombre de dios ¿has hecho un next?. Y yo en mis notas escribo sin tantas faltas.

        • Boca de Pez Boca de Pez
          6

          Igual el tipo de datos, quizás tengas como provincia tipo…

          Igual el tipo de datos, quizás tengas como provincia tipo texto y reglada tipo boleano o numerico, por lo que en el caso del tipo texto tienes rellenado "" y en el caso de reglada no hay nada. Realmente te da error? o simplemente que te da nulo?

          Lo de las faltas no creo que sea por prisas, ya que cojer es con g.

        • Boca de Pez Boca de Pez
          6

          Cambia "txtReglada.text = rst.Fields("REGLADA")" por esto:…

          Cambia "txtReglada.text = rst.Fields("REGLADA")" por esto: txtReglada.text = rst.Fields("REGLADA") & "" para todos los campos de texto

    • Boca de Pez Boca de Pez
      6

      Es decir, que en el Acces tienes que esos campos pueden…

      Es decir, que en el Acces tienes que esos campos pueden contener NULL y a pesar de ello te falla pq no has introducido nada? Si rellenas algo y no los dejas en blanco, entonces funciona?

      • Boca de Pez Boca de Pez
        6

        exacto en el access tengo que pueden ser NULL y tambien he…

        exacto en el access tengo que pueden ser NULL y tambien he probado que puedan ser NULL Y que de predeterminado sea "" y nada

        Si relleno todos todos los datos funciona perfecto.

        • Boca de Pez Boca de Pez
          6

          Puede que te esté petando el comando para insertar los datos,…

          Puede que te esté petando el comando para insertar los datos, y que ese comando no pueda estar en blanco, por lo que tu programando o debes entrecomillarlo o algo por el estilo.

          Puedes poner el comando que utilizas para insertar los datos del formulario?

          Por ejemplo, en SQL el problema seria: "INSERT INTO tabla(campo1,campo2) VALUES(,'hola')" Esta sentencia petaria porque el campo 1 no está informado, se arregla si lo pones entre comillas:
          "INSERT INTO tabla(campo1,campo2) VALUES('','hola')"

          Lo dicho, pon el código si crees que el problema puede ser ese.

          • Boca de Pez Boca de Pez
            6
            OK pongo el codigo a la hora de darme el fallo... e exo una…

            OK pongo el codigo a la hora de darme el fallo... e exo una funcion escribir que me ace esto :

            Public Sub imprimir()
            
                If rst.EOF And rst.BOF Then
            
                    MsgBox "No tienes ningun registro guardado.", vbOKOnly + vbInformation, "BASE DE DATOS VACIA"
            
                Else
            
            'Parte Datos Personales
            
                txtNombre.Text = rst.Fields("NOMBRE")
            
                txtApellido.Text = rst.Fields("APELLIDO1")
            
                txtApellido2.Text = rst.Fields("APELLIDO2")
            
                txtDNI.Text = rst.Fields("DNI")
            
                txtFechaNacimiento.Text = rst.Fields("FECHANACIMIENTO")
            
                txtEmail.Text = rst.Fields("EMAIL")
            
                txtDomicilio.Text = rst.Fields("DOMICILIO")
            
                txtPoblacion.Text = rst.Fields("POBLACION")
            
                txtCPostal.Text = rst.Fields("CPOSTAL")
            
                txtProvincia.Text = rst.Fields("PROVINCIA")
            
                txtTelefono.Text = rst.Fields("TELEFONO1")
            
                txtTelefono2.Text = rst.Fields("TELEFONO2")
            
                txtFechaAlta.Text = rst.Fields("FECHAALTA")
            
                If (rst.Fields("ESTADOCIVIL") = "CASADO") Then
            
                    optEstadoCasado.Value = True
            
                ElseIf (rst.Fields("ESTADOCIVIL") = "VIUDO") Then
            
                    optViudo.Value = True
            
                ElseIf (rst.Fields("ESTADOCIVIL") = "SOLTERO") Then
            
                    optEstadoSoltero.Value = True
            
                ElseIf (rst.Fields("ESTADOCIVIL") = "DIVORCIADO") Then
            
                    optDivorciado.Value = True
            
                ElseIf (rst.Fields("ESTADOCIVIL") = "OTROS") Then
            
                    optOtros.Value = True
            
                End If
            
                If (rst.Fields("SEXO") = "HOMBRE") Then
            
                    optSexoHombre.Value = True
            
                ElseIf (rst.Fields("SEXO") = "MUJER") Then
            
                    optSexoMujer.Value = True
            
                End If
            
                If (rst.Fields("HIJOS") = "SI") Then
            
                    optHijosSi.Value = True
            
                ElseIf (rst.Fields("HIJOS") = "NO") Then
            
                    optHijosNo.Value = True
            
                End If
            
                If (rst.Fields("ESTADO") = "ALTA") Then
            
                    optEstadoAlta.Value = True
            
                ElseIf (rst.Fields("ESTADO") = "BAJA") Then
            
                    optEstadoBaja.Value = True
            
                End If
            
            'Parte Formacion y Experiencia
            
                txtReglada.Text = rst.Fields("REGLADA")
            
                txtComplementaria = rst.Fields("COMPLEMENTARIA")
            
                txtTrayectoriaLaboral = rst.Fields("TRAYECTORIA")
            
                txtIdiomas.Text = rst.Fields("IDIOMAS")
            
                txtInformatica.Text = rst.Fields("INFORMATICA")
            
                txtTiempoTrabajado.Text = rst.Fields("TIEMPOTRABAJADO")
            
                If (rst.Fields("CARNET") = "SI") Then
            
                    optCarnetSi.Value = True
            
                ElseIf (rst.Fields("CARNET") = "NO") Then
            
                    optCarnetNo.Value = True
            
                End If
            
                If (rst.Fields("VEHICULO") = "SI") Then
            
                    optVehiculoSi.Value = True
            
                ElseIf (rst.Fields("VEHICULO") = "NO") Then
            
                    optVehiculoNo.Value = True
            
                End If
            
                If (rst.Fields("ESTADOACTUAL") = "ACTIVO") Then
            
                    optEstadoActivo.Value = True
            
                ElseIf (rst.Fields("ESTADOACTUAL") = "PARADO") Then
            
                    optEstadoParado.Value = True
            
                End If
            
                End If
            
            End Sub
            
            Public Sub guardar()
            
            'Parte Datos Personales
            
                rst.Fields("NOMBRE") = txtNombre.Text
            
                rst.Fields("APELLIDO1") = txtApellido.Text
            
                rst.Fields("APELLIDO2") = txtApellido2.Text
            
                rst.Fields("DNI") = txtDNI.Text
            
                rst.Fields("FECHANACIMIENTO") = txtFechaNacimiento.Text
            
                rst.Fields("EMAIL") = txtEmail.Text
            
                rst.Fields("DOMICILIO") = txtDomicilio.Text
            
                rst.Fields("POBLACION") = txtPoblacion.Text
            
                rst.Fields("CPOSTAL") = txtCPostal.Text
            
                rst.Fields("PROVINCIA") = txtProvincia.Text
            
                rst.Fields("TELEFONO1") = txtTelefono.Text
            
                rst.Fields("TELEFONO2") = txtTelefono2.Text
            
                rst.Fields("FECHAALTA") = txtFechaAlta.Text
            
                If (optEstadoCasado.Value = True) Then
            
                   rst.Fields("ESTADOCIVIL") = "CASADO"
            
                ElseIf (optEstadoViudo.Value = True) Then
            
                    rst.Fields("ESTADOCIVIL") = "VIUDO"
            
                ElseIf (optEstadoSoltero.Value = True) Then
            
                    rst.Fields("ESTADOCIVIL") = "SOLTERO"
            
                ElseIf (optEstadoDivorciado.Value = True) Then
            
                    rst.Fields("ESTADOCIVIL") = "DIVORCIADO"
            
                ElseIf (optEstadoOtros.Value = True) Then
            
                    rst.Fields("ESTADOCIVIL") = "OTROS"
            
                End If
            
                If (optSexoHombre.Value = True) Then
            
                    rst.Fields("SEXO") = "HOMBRE"
            
                ElseIf (optSexoMujer.Value = True) Then
            
                    rst.Fields("SEXO") = "MUJER"
            
                End If
            
                If (optHijosSi.Value = True) Then
            
                    rst.Fields("HIJOS") = "SI"
            
                ElseIf (optHijosNo.Value = True) Then
            
                    rst.Fields("HIJOS") = "NO"
            
                End If
            
                If (optEstadoAlta.Value = True) Then
            
                    rst.Fields("ESTADO") = "ALTA"
            
                ElseIf (optEstadoBaja.Value = True) Then
            
                    rst.Fields("ESTADO") = "BAJA"
            
                End If
            
            'Parte Formacion y Experiencia
            
                rst.Fields("REGLADA") = txtReglada.Text
            
                rst.Fields("COMPLEMENTARIA") = txtComplementaria
            
                rst.Fields("TRAYECTORIA") = txtTrayectoriaLaboral
            
                rst.Fields("IDIOMAS") = txtIdiomas.Text
            
                rst.Fields("INFORMATICA") = txtInformatica.Enabled
            
                rst.Fields("TIEMPOTRABAJADO") = txtTiempoTrabajado.Enabled
            
                If (optCarnetSi.Value = True) Then
            
                    rst.Fields("CARNET") = "SI"
            
                ElseIf (optCarnetNo.Value = True) Then
            
                    rst.Fields("CARNET") = "NO"
            
                End If
            
                If (optVehiculoSi.Value = True) Then
            
                    rst.Fields("VEHICULO") = "SI"
            
                ElseIf (optVehiculoNo.Value = True) Then
            
                    rst.Fields("VEHICULO") = "NO"
            
                End If
            
                If (optEstadoActivo.Value = True) Then
            
                    rst.Fields("ESTADOACTUAL") = "ACTIVO"
            
                ElseIf (optEstadoParado.Value = True) Then
            
                    rst.Fields("ESTADOACTUAL") = "PARADO"
            
                End If
            
            End Sub

            Graciasss, el fallo me da en rst.Fields("reglada")

            • Boca de Pez Boca de Pez
              6
              Hace años que no toco la versión 6 del BASIC, pero creo que…

              Hace años que no toco la versión 6 del BASIC, pero creo que ADODB permitía crear parámetros, y realmente sería la forma correcta de trabajar con la BDD ya que de esa forma te evitarías estos problemas y lo mas importante, evitarías la inyección.

              Eso lo digo por no recomendarte pasar a la versión 7, 8 , 9 o 10, vamos al .NET donde todo es mucho mas fácil aun sabiendo que el código es visible para todos.

              Siento no poder ver done falla que es muy pronto.

              • Boca de Pez Boca de Pez
                6
                Aunque las versiones mas nuevas sean mejores , ademas de…

                Aunque las versiones mas nuevas sean mejores , ademas de porque el programa sera mejor tambien porque la programacion es orientada a objetos y es mucho mejor ( como java) , no podria programar con esas versiones porque es para el curro y no para mi casa y claro no quiero arriesgarme a que este fallando el programa todo el dia..

    • Boca de Pez Boca de Pez
      6

      SOLUCIONADO + o - Nose porque algunos campos me rellena…

      SOLUCIONADO + o -

      Nose porque algunos campos me rellena automaticamente con "" y otros me los deja en null... pero bueno la opcion mas correcta para tratar estos casos es con la funcion isnull(campo) then acemos lo k keremos end if asi si un campo es nulo podremos llenarlo por ejemplo con numeros si es un telefono aunk sea 1111111111 o como queramos.. , es decir , tenemos abierto el abanico para cualquier opcion con la funcion is null.. la forma warrimala es :

      txtReglada.Text = "" & rst.Fields("REGLADA") y asi si en rst... no hay nada y es nulo en txtReglada al menos no lo pondra como nulo si no como vacio.

    • Boca de Pez Boca de Pez
      6

      Como PROGRAMADOR Experto de Visual Basic 6.0 Opino ( que es…

      Como PROGRAMADOR Experto de Visual Basic 6.0 Opino ( que es un lenguaje muy bueno y simple= menos complicado que el net y sus sucesores , solo fijate lo complicado que resulta crear hijos de MDI y que no se abra mas de una instancia en dichas versiones en comparacion con la version 6)

      El Código es malo o muy malo desde el principio :

      1º- Deberias comprobar con el ADODBC que la tabla este vacia

      2º- Poner las condiciones en dicho caso y en el opuesto

      3º- Seguro que tienes un PrimaryKey o ForeignKey , o ambas sin concretar (ya que los fallos radican cuando cambia un primakey a foreignkey en sus propiedades)

      Yo tengo un truco para comprobar como se estan metiendo los datos ( ver si se meten o no o cuales se meten o no) para comprobar que no hay fallos en el relleno de los datos de las tablas. Tambien deberias rellenar los datos de la tabla con el ADODBC y no con SQL (YA QUE ES MUCHO MAS FACIL Y MENOS PROBLEMATICO); Tambien deberias asegurarte que los datos se introducen por el nombre del campo y no por su posicion (que es el primer error que te salta; ya que si es por posicion en el mismo momento que amplies la tabla con nuevos campos tendras que indicar las nuevas posiciones de dichos campos).

      Porque sino se volvera loco a la hora de rellenar los datos unos seran rellenados y otros no. Por no hablar de lo dificil que sera entender lo que hiciste hace unos meses. ¡¡¡SUERTE!!!