Limpiar Form

Hola de nuevo:
Encontré otro problema. Al ingresar al Form donde se realizan mis cálculos no se limpia ni actualiza. El Form es llamado desde otro Form donde el único valor que se traspasa es una variable declarada en un Modulo llamada TareaSeleccionada. Esta variable no se limpia en el nuevo Form ni siquiera con un Instrucción : TareaSeleccionada ="" donde se le asigna una cadena vacía en el nuevo Form.

1 respuesta

Respuesta
1
Tal vez la función que debería limpiar esa función no la estas ejecutando.. pero la verdad es que sin el código no puedo ayudarte mucho... postealo a ver si encontramos el error... o quizás hay una variable local con el mismo nombre...
Gracias Javier, pero, ya solucione ese problema y era una tontería. Lo que me preocupa ahora es que intento modificar un campo de una tabla hecha en access 2003 y me arroja un error en tiempo de ejecución.
La idea es la siguiente: Ten varios campos en una tabla llamada ItemsYNombreTarea sin campo clave (Porque mi campo clave es NombreTarea pero puede repetirse varias veces dentro de la tabla). En esa tabla pueden existir muchos datos en campos distintos que se repiten, pero que permutan entre si.
Hay un campo llamado Cantidad dentro de la tabla que lo presento en un DaraGrid llamado Sel, yo altero su valor y descuento esa cantidad. En el DataGrid.
Sel.columns(3)=Sel.columns(3)-Valor(ciclo)   donde sel.columns(3) es la columna y valor(ciclo) es el nuevo valor leido de una textbox creada en tiempo de ejecucion y que resta el valor de Sel.columns() para actualizarlo. Al hacer esto solo con un registro que muestre el datagrid no hay problemas, el problema es cuando tiene que hacerlo con 2 o mas registros: arroja el siguiente error: Informacion de columna clave insuficiente o incorrecta; demasiadas filas afectadas por la actualizacion Error 6351 en tiempo de ejecucion.
te mando el codigo:
For pos = 1 To cuentaitems
              Sel.Row = pos - 1     <-- Aqui genera el error
            With LlenaTareasNoAsignadas.Recordset
              .AddNew
              !NombreTarea = nt
              !Cam = nCamino
              !KmInicio = kini
              !KmTermino = kter
              !TotalTarea = Subtotal
              !EstadoTarea = EstTarea
              !Lado = LadoText
              !Item = Sel.Columns(0)
              !CantidadProyectada = Valor(posicion - 1)
              Sel.Columns(3) = Sel.Columns(3) - Valor(pos)
              !FechadeCreacion = Fecha
              .Update
            End With
        Next
Que hago mal, acepto sugerencias.
Gracias
No entiendo mucho lo que tratas de explicar
"La idea es la siguiente: Ten varios campos en una tabla llamada ItemsYNombreTarea sin campo clave (Porque mi campo clave es NombreTarea pero puede repetirse varias veces dentro de la tabla). En esa tabla pueden existir muchos datos en campos distintos que se repiten, pero que permutan entre si."
Al parecer ese error proviene de la BD... y no de tu aplicación, podría ser que tu tablas están relacionadas y no te permite ingresar un registro o quizás puede ser problema con una PORQUE... podrías poner más código a ver si encuentramos el error de tu código
saludos
Hola Javier.
Gracias por responder, me he dado mil vueltas y reescrito lineas de código y nada. Te mando todo el código que ocurre dentro de el evento click del button Agregar.
Tengo una tabla llamada ItemsYNombreTarea.
1- La tabla tiene los campos NombreTarea, Items, Cantidad, Unidad, ValorUnitario.
2- Si la Tarea tiene solo un item aparece un solo NombreTarea en la Tabla, pero como puede tener más items, este campo se repite N=Items veces. ¿Me explico? Es decir, que la tarea puede tener 3 item y el campo nombre tarea se repite 3 veces.
3- Cada uno de estos item tiene una cantidad (campo Cantidad) que debe ser actualizada cada vez que yo le descuente un valor.
4- Si la tarea tiene un solo item el descuento lo hace sin problemas. El problema es cuando la tarea tiene más items.
5- El error lo envia en la linea donde actualiza la posicion del grid:  Sel.Row = ciclo
6- Y por ultimo, no soy un experto en programación así que te agradezco muchísimo tu colaboración y ojala yo me explique bien para poder salir de este problema. Si no es así te ruego vuelvas a preguntar para más aclaraciones.
If cuentaitems > 1 Then
                        Sel.Row = 0                               ' posiciona en la primera fila del grid
                        If IsNumeric(Valor(0)) = True Then
                              If Valor(0) >= 0 And Valor(0) <= Val(Sel.Columns(3)) Then 'rango de valores
                              'rutina aparte porque el ciclo no me toma la textbox de indice 0
                                  Resultado(0) = Val(Sel.Columns(4)) * Valor(0)
                                  suma = suma + Resultado(0)
                                  Sel.columns(3)=Sel.columns(3)-Valor(0)  'Cuando lo hace con una sola linea editada por el data grid no hay problema. El problema se presenta cuando existen 2 o mas lineas, es decir si encuentra mas items dentro de la tabla que pertenezcan a la tarea buscada. en ese caso si en cuentra mas de uno debe descontar el valor econtrado a cada uno.
                              Else
                                  MsgBox "Valor ingresado fuera de rango"
                                  Asignar.Enabled = False
                                  Valor(0) = ""
                                  Valor(0).SetFocus
                              End If
                        Else
                            Asignar.Enabled = False
                            Valor(0) = ""
                            Valor(0).SetFocus
                        End If
                        For ciclo = 1 To cuentaitems
                        If ciclo < cuentaitems Then
                        Sel.Row = ciclo   <--- Error en segunda iteracion
                            If IsNumeric(Valor(ciclo)) = True Then
                                  If Valor(ciclo) >= 0 And Valor(ciclo) <= Val(Sel.Columns(3)) Then
                                       Resultado(ciclo) = Val(Sel.Columns(4)) * Valor(ciclo)
                                       Sel.Columns(3) = Sel.Columns(3) - Valor(ciclo)  'Al agregar esta linea de codigo arroja el error mas arriba en la segunda vuelta del ciclo.
                                       suma = suma + Resultado(ciclo)
                                  Else
                                       MsgBox "Valor ingresado fuera de rango"
                                       Asignar.Enabled = False
                                       Valor(ciclo) = ""
                                       Valor(ciclo).SetFocus
                                  End If
                            Else
                               Valor(ciclo) = ""
                               Asignar.Enabled = False
                               Valor(ciclo).SetFocus
                            End If
                        End If
                        Next
                Else
' Esta otra parte es por si no existe mas de un item perteneciente a la tarea.
                   If IsNumeric(Valor(0)) = True Then
                        If Valor(0) >= 0 And Valor(0) <= Val(Sel.Columns(3)) Then
                             Resultado(0) = Val(Sel.Columns(4)) * Valor(0)
                             Sel.Columns(3) = Sel.Columns(3) - Valor(0)
'No presenta problemas porque solo hace un cambio
                             suma = suma + Resultado(0)
                             Asignar.Enabled = True
                             Subtotal = suma
                        Else
                             MsgBox "Valor ingresado fuera de rango"
                             Asignar.Enabled = False
                             Valor(0) = ""
                             Valor(0).SetFocus
                        End If
                   Else
                      Valor(0) = ""
                      Asignar.Enabled = False
                      Valor(0).SetFocus
                   End If
                End If
Todavía no reviso el código pero ahora entiendo más tu problema, al parecer podría ser un problema de modelamiento de tu BD...
En fin aunque tu bd repite datos (que no debería hacerse así) solo te lo escribo para que lo tengas presente y como esa no es tu pregunta entonces haremos que funcione el programa... necesito que revises los campos de tu BD, estos campos deben tener estas características:
- Permitir nulos(en el caso de que algún campo lo sea)
- No deben existir campos unique <- yo creo que por aqui esta tu error uno de tus campos es de tipo unique y al agregar el segundo item te arroja ese error
- Tu bd no debe tener primary key
Ojo que esto es solo para tu BD porque está mal modelada es una estructura muy rígida que el día de mañana vas a querer agregarle algo a tu programa y vas a tener que hacer nuevamente la BD o simplemente el programa no te va a servir...
Si tenias algún campo como unique entonces ahora el código te debería funcar... cuéntame si te funciona, sino paso a revisar el código...
Chauu voy a almorzar..
¿Lo revisaste?
Para ver esto haz ese mismo ejemplo manualmente en tu bd y si te sale ese error es porque el problema esta en tu BD
Como te decía anteriormente no soy muy perito en esto aun, creo que debí haber creado un campo clave en cada una de las tablas de mi base de datos y en base a ese campo clave relacionarlas. En fin no se si este a tiempo de modificar pero me sirve de lección. En todo caso la cantidad de modificaciones que pueda recibir el programa es prácticamente nula. Ahora la respuesta es 'Si' la revise pero no tengo primary key y si recibe nulos y ademas unique o tiene.
¿Cómo es eso de crear el mismo ejemplo manualmente en la base de datos?
¿Lo programo en un modulo o hago una macro?
Si tu programa debería agregar 3 tuplas en la tabla POR entonces agrega esas tuplas de forma manual...
Abres la bd e ingresa esos datos directamente en la BD, solo para ver si funca...
Muchas gracias por el apoyo. Espero seguir contando con tu colaboración. Ya te explique que soy novato en esto de la programación y creo que aparecerán nuevas dudas. Muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas