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.
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 de javier_007
1
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
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
"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
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..
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
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?
¿Cómo es eso de crear el mismo ejemplo manualmente en la base de datos?
- Compartir respuesta
- Anónimo
ahora mismo