Visual Basic - formularios

Life is soft - evento anual de software empresarial
 
Vista:

formularios

Publicado por danirl (34 intervenciones) el 06/10/2006 18:15:52
Hola a ver si me pueden ayudar con esto, tengo en la tabla clientes un campo estado, el cual puede tomar dos valores, activo y suspendido, hasta aca todo bien, pero en el formulario ventas, cuando el cliente tiene estado SUSPENDIDO, el programa me avisa el estado y puse un msgbox con vbyesno, al cual cuando le doy yes, me tiene que cerrar el formulario ventas y llevar al formulario de abm de clientes y mostrar todos los datos e inclusive permitirme modificar dicho cliente, el problema que estoy teniendo es q cuando lo hago de esta manera y quiero modificar me sale un error 3022 "los cambios solicitados a la tabla no se realizaron porque crearian valores duplicados...", paso esa parte del codigo para q vean
**************************************************************************************************************
If cliente!Estado = "SUSPENDIDO" Then
If MsgBox("El cliente: " & cliente!codigo & ", " & cliente!Apellido & " " & cliente!nombres & " tiene estado SUSPENDIDO, Desea ver los datos del cliente?", vbYesNo + vbInformation) = vbYes Then
Unload venta
abmclientes.Show
abmclientes.txtcodigo = cliente!codigo
abmclientes.txtapellido = cliente!Apellido
abmclientes.txtnombres = cliente!nombres
abmclientes.cmbtipo = cliente!TipoDocumento
abmclientes.txtnumdoc.Text = cliente!numdoc
abmclientes.txtdireccion.Text = cliente!Direccion
abmclientes.txtnro.Text = cliente!nro
abmclientes.txtbarrio.Text = cliente!Barrio
abmclientes.txttelefono.Text = cliente!telefono
abmclientes.txtcelular.Text = cliente!celular
abmclientes.txtfechaalta.Text = cliente!FechaAlta
abmclientes.txtfnacimiento.Text = cliente!fechaNac
abmclientes.txtobservaciones.Text = cliente!observaciones
abmclientes.optactivo.Visible = False
abmclientes.optsuspendido.Visible = False
abmclientes.lblestado.Visible = True
abmclientes.lblestado.Caption = socio.Fields("Estado")
If abmclientes.lblestado.Caption = "SUSPENDIDO" Then
abmclientes.lblestado.ForeColor = vbRed
abmclientes.lblestado.BackColor = vbYellow
Else
abmclientes.lblestado.ForeColor = &HFFFFFF
abmclientes.lblestado.BackColor = &H824100
End If
********************************************************************************************************
este codigo anda, solo q al abrir el formulario abmclientes y mostrarme los datos, no puedo actualizarlos.
No creo que sea error del formulario abmclientes xq cuando entro directamente a este, anda lo mas bien.
Muchas gracias, espero puedan contestar esto, cualquier duda o si no entienden bien mi pregunta y creen poder ayudarme, mi messenger es este mismo e-mail.
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:formularios

Publicado por ivan (1039 intervenciones) el 06/10/2006 18:44:00
Una de las causas de ese error es que se intente grabar un registro cuyo campo llave ya se encuentre grabado, revisa bien como declaraste la base de datos, sobre si acepta o no repetidos

revisa tambien la parte de CAMBIOS, puede que en vez de cambiar o editar un registro lo agregue, generando así un duplicado

revisa bien tu codigo para que detectes el momento preciso en donde falla

suerte !
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:formularios

Publicado por danirl (34 intervenciones) el 06/10/2006 19:02:48
sinceramente no creo q el error venga x ese lado, ya q al aceptarme al cliente en el formulario ventas es xq ese cliente exste en la bd, por otro lado, cuando ejecuto el formulario de clientes x separado me deja modificar cualquier cliente q elija hasta su codigo de cliente inclusive.
Para mi q el error viene por el lado de apuntar al registro en la bd llevarlo al formulario cliente, digo esto xq cuando hago todo el proceso de verificar el estado del cliente y llamar al formulario abmclientes, haciendo click en los botones anterior y despues en el siguiente para volver al cliente suspendido, la actualizacion la hace si problemas.

Muchas gracias x contestarme.
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:formularios

Publicado por Santi (4 intervenciones) el 06/10/2006 20:35:01
La verdad es que no me he molestado en analizar el código que pones porque me parece una castaña, pero si quieres un consejo sobre él te diré que para optimizar recursos y trabajar menos, VB nos facilita la instrucción With ... End With

p.e. en tu código:

With abmclientes
.txtcodigo = .......
.txtapellido....
.cualquiercontrolquetengasenelfor = ,,,,,
End With

evitarías andar repitiendo continuamente abmclientes, abmclientes.....

Espero que te sirva
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:formularios

Publicado por danirl (34 intervenciones) el 06/10/2006 20:55:55
si, muy lindo, menos laburo, pero mi problema sigue, gracias igual
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:formularios

Publicado por Santi (4 intervenciones) el 06/10/2006 22:50:23
bien, empieza por depurar el codigo y despes veremos lo que se puede hacer para resolver tu problema.
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:formularios

Publicado por danirl (34 intervenciones) el 06/10/2006 23:00:07
ya lo hice
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:formularios

Publicado por Santi (4 intervenciones) el 06/10/2006 23:06:55
pues ahora nos lo pones depurado a ver si nos enteramos de los que quieres
y nos vuelves a explicar cual es el problema que tienes.
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:formularios

Publicado por danirl (34 intervenciones) el 06/10/2006 23:14:48
quisiera saber si puden ayudarme con lo sgte.
estoy realizando un sistema para un videoclub y se me presento el problema en unos formularios:
Cuando ingreso al formulario de alquileres, lo primero q hago es controlar si el socio tiene estado "ACTIVO" o "SUSPENDIDO", si está "SUSPENDIDO", tengo un msgbox que me avisa del estado del socio y me da la opcion de si quiero ver sus datos o no, si quiero verlos tiene que cerrar el formulario de alquiler y abrir el de abmsococios con el socio q ingrese en el otro form y todos sus datos. Hasta aca hice todo, pero el problema se me presenta cuando quiero modificar los datos de este socio, para eso hago click en el boton modificar q me habilita todos los txt y a continuacion hago las modificacione q quiero, pero cuando doy click en el boton actualizar me sale el error 3022 los cambios solicitados a la tabla no se realizaron porque crearian valores duplicados..."
COMO PUEDO SOLUCIONAR ESTO???
*********** parte del codigo del formulario alquileres**********************
If socio!Estado = "SUSPENDIDO" Then
If MsgBox("El socio: " & socio!codigo & ", " & socio!Apellido & " " & socio!nombres & " tiene estado SUSPENDIDO, Desea ver los datos del socio?", vbYesNo + vbInformation) = vbYes Then
Unload alquilerdvd
socios.Show
With socios
.txtcodigo = socio!codigo
.txtapellido = socio!Apellido
.txtnombres = socio!nombres
.cmbtipo = socio!TipoDocumento
.txtnumdoc.Text = socio!numdoc
.txtdireccion.Text = socio!Direccion
.txtnro.Text = socio!nro
.txtbarrio.Text = socio!Barrio
.txttelefono.Text = socio!telefono
.txtcelular.Text = socio!celular
.txtfechaalta.Text = socio!FechaAlta
.txtfnacimiento.Text = socio!fechaNac
.txtmail.Text = socio.Fields("E-mail")
.txtcantidad = socio!nroalquileres
.txtobservaciones.Text = socio!observaciones
Exit Sub
End With
**************************************
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:formularios

Publicado por Santi (4 intervenciones) el 06/10/2006 23:35:17
De entrada el codigo está bastante enrredadao, tienes dos If sin End If o Else pero parece que el problema está en que ni haces un AddNew ni Update. Si fuera un Update y socio!codigo fuera una clave principal elimina la instrucción .txtcodigo = socio!codigo
Espero que lo entiendas, si nos es así postea
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:formularios

Publicado por danirl (34 intervenciones) el 06/10/2006 23:45:56
entiendo lo q me decis, con respecto a los dos if, se cierran mas adelante en el codigo con sobre el update y el addnew, creo q no van en este codigo, xq lo unico q hago aca es pasar los datos del cliente a otro formulario, pero igual voy a intentar, gracias otra ves
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