Visual Basic - sobre eliminacion de un dato

Life is soft - evento anual de software empresarial
   
Vista:

sobre eliminacion de un dato

Publicado por josbel gonzalez (32 intervenciones) el 15/04/2009 01:05:42
Buenas amigos, antes que nada gracias por tan solo tomarse tiempo para leer esta nota, veran desde hace algun tiempo vengo desarrollado una aplicacion que gestione un control de clientes, hasta ahora muy bien tanto en la interfaz grafica como las lineas de codigo que sucede uno de los precesos de este sistema es que de una cola de clientes que ya fue previamente llenada por un formulario anterior se muestra en un dbgrid, ya el mismo esta con un estilo de marquee que me selecciona la fila completa como seleccion del registro; al darle doble click sobre un registro este me abre un formulario en donde completo otros datos y se realiza lo que para mi caso llamo una recepcion, se supone que el proceso sea que una vez selecionado el cliente y este sea recepcionado se borre de la tabla que se muestra en el dbgrid pues ya este cliente fue atendido, bueno probe de esta forma:

TRESUELTO.AddNew

TRESUELTO("TRATAMIENTO") = TRATAMIENTO
TRESUELTO("OBSERVACION") = OBSERVACION
TRESUELTO("TRAMITA") = TRAMITA
TRESUELTO("SERVICIOS") = SERVICIOS
TRESUELTO("CASOMESA") = CASOMESA

TRESUELTO.Update

TTEMPORAL.Delete

Bien este proceso me guardaba el registro y se suponia que el registro activo era eliminado pero no es asi me elimina el primero de la tabla asi haya seleccionado el ultimo, bien esto es ya que uso dao sin embargo habilite el ado, conecte la base de datos, el modulo de mi aplicacion es este:

With cnn
.CursorLocation = adUseClient
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & "C:RECEPCION.MDB" & ";Persist Security Info=False"
End With

y dentro del formulario probe esta ejecucion para eliminar el registro:

cnn.Execute ("delete from temporal where numerofactura = " & RESUELTO.FACTURA.Text & "")

el campo resuelto.factura.text es un campo del formulario desde donde estoy alimentando la tabla; ahora esta ejecucion me devuelve el siguiente error

error '2-2147217904 (8004e10)' en tiempo de ejecucion

no se han especificado valores para algunos parametros requeridos

por lo que entiendo es como si faltara un parametro o estoy llamando a un codigo que sencillamente no existe pero lo mencionado en la ejecucion esta tal cual en mi aplicacion, es mas si esta en ejecucion que es cuando me muestra el error y posiciono el puntero sobre " & RESUELTO.FACTURA.Text & " el mismo me devuelve un tips con el valor que precisamente que se supone tendria ese campo de texto, suponiendo que el tuviera un valor 100 pues al posicionar el puntero me muestra 100, no entiendo que puedo estar realizando mal de verdad le agradesco cualquier ayuda que me puedan prestar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sobre eliminacion de un dato

Publicado por P3L30N2009 (701 intervenciones) el 15/04/2009 11:44:31
Es posible que el campo 'numerofactura' sea de tipo texto, pon la variable entre comillas simples:

cnn.Execute ("delete from temporal where numerofactura = '" & RESUELTO.FACTURA.Text & "'")
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:sobre eliminacion de un dato

Publicado por Josbel Gonzalez (32 intervenciones) el 15/04/2009 17:22:04
Perfecto Funciono muchisimas gracias de verdad, es increible como los pequeños detalles hacen la diferencia jaja gracias de verdad por toda su ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Una duda ...

Publicado por quique (52 intervenciones) el 15/04/2009 16:28:17
Creo que los tiros van por este lado:

cnn.Execute ("delete from temporal where numerofactura = " & RESUELTO.FACTURA.Text & "")
el campo resuelto.factura.text es un campo del formulario desde donde estoy alimentando la tabla

Pregunta: ¿cómo que es un CAMPO del formulario? Seguramente es un control, pero de qué tipo, porque parece que se llama RESUELTO, que tiene un elemento llamado FACTURA y una propiedad Text.
Si nos puedes aclarar esto tal vez te podríamos ayudar.
De cualquier manera, supongo que en tu tabla el campo NumeroFactura será numérico, prueba la sentencia así:

cnn.Execute "Delete from temporal where numerofactura = " & RESUELTO.FACTURA.Text
Sin paréntesis ni las comillas que concatenas al final.

Otra cosa, el contenido del objeto RESUELTO.FACTURA, ¿no tendrá separador de millares como la coma o punto? digamos, por ejemplo: 12,345.00
Porque esos signos pueden ocasionar problemas.
En fin, insisto en que nos aclares lo del campo RESUELTO.FACTURA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Una duda ...

Publicado por Josbel Gonzalez (32 intervenciones) el 15/04/2009 17:58:20
Hola Quique, gracias de verdad por tu ayuda P3L30N2009 ya me ayudo con las comillas simples pues el campo es texto como el mismo determino; te explico para de todas formas aclarar, el campo resuelto.factura.text es un campo de texto en el formulario es decir un control donde se muestra un numero de factura que sucede mi error fue que cuando realize la tabla le asigne un formato de texto en vez de hacerlo numerico, y bueno en teoria el solo mostraria un dato en este caso un numero yo necesitaba que se eliminara en la tabla temporal el dato que ya estaba recepcionando pues es como decir el cliente ya salio de la cola no deberia seguir apareciendo en espera. Y pense que la mejor forma era comparar este campo de texto el cual es un numero unico, contra la tabla y el que coincidiera pues eliminarlo, y tal como me lo recomendo P3L30N2009 era cuestion de colocarles comillas simples pues el campo al cual hacia referencia era de tipo texto; gracias de verdad por toda su ayuda sinceramente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Aclarando un poco mas...

Publicado por P3L30N2009 (701 intervenciones) el 15/04/2009 18:16:35
Que la sentencia tenga o no paréntesis es lo mismo, de ambas formas funciona.

Y no creo que a nadie se le ocurra poner un númeo de factura con decimales.

El error que menciona josbel es el típico de no coincidencia de tipos en una consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Otro poco mas ...

Publicado por quique (52 intervenciones) el 15/04/2009 18:51:35
"Que la sentencia tenga o no paréntesis es lo mismo, de ambas formas funciona"
Pues sí, pero se aconseja usar los paréntesis cuando la sentencia que se ejecuta retorna registros. Y si puedes hacer más simple la sentencia (quitando los paréntesis) pues mejor ¿no? En fin, cuestión de preferencias.

"Y no creo que a nadie se le ocurra poner un númeo de factura con decimales. "
Con decimales no, pero sí podrían ponerle separador de millares. Y bien puede ser el punto (como en España), o la coma. Pero yo jamás mencioné DECIMALES, sino separador de millares. El ejemplo que puse fue para ambos casos (el de España y el el resto del mundo).

En fin, dejemos el asunto así, lo bueno es que ya está resuelto el problema (gracias a ti, se reconoce).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar