Cómo dar nuevas claves a clientes en una aplicación de altas y bajas creada con Visual Basic

Antes que nada, estoy realizando una aplicación donde doy de bajas, altas modifica, y consultas. Pero a la hora de darles de alta introduzco una clave y si ya esta me dice que ya existe, y si no pues se guardan los datos en la tabla clientes ok, pero ese no es mi problema. El error es que si introduzco una clave nueva cons sus datos me salgo del formulario de altas y me voy por ejemplo al de consultas, modifica o elimina e introduzco por ejemplo la clave del cliente que acabo de introducir en la sección de altas y me dice que no existe y regreso al form de altas y quiero dar esa clave y me dice que si existe y vuelvo a regresar a los otros formulararios para volver a checar y me vuelve a decir el mismo msg. De que no existe cuando si existe porque si aparece en la tabla, a parte me salgo de la ejecución y vuelvo a ejecutarlo los formularios de consulta, modifica, elimina y ahora si ya me aparece el dato que no me aparecía no entiendo eso, y checo mi código y creo que esta bien porque desde luego que aparece después de que cierro y regreso a la aplicación y aparece es porque si. Pero no entiendo eso de que introduzco una nueva clave con sus respectivos datos y la quiero consultar, modificar o eliminar y no aparece y ya después de cerrar y abrir la aplicación de nuevo si aparece.
Espero y haya sido clara con mi problema y me lo puedan resolver, es urgente!

1 Respuesta

Respuesta
¿Podrías mostrar el código que utilizas al insertar un nuevo registro y el que utilizas para consultarlo? Es que "a ciegas" es un poquito más dicífil adivinar de qué está enfermito tu proyecto.
Saludos desde México, Juan Pablo E.P.
Hola, gracias por responder.
Este es el código que utilizo para consultas:
Private Sub clave_KeyPress(KeyAscii As Integer)
Dim n As String
If KeyAscii = 13 Then
n = clave.Text
banamex1.Recordset.FindFirst "clave= '" & n & "'"
If banamex1.Recordset.NoMatch Then
MsgBox ("error no existe esta clave")
clave.Text = ""
clave.SetFocus
Else
nombre.Text = banamex1.Recordset.Fields("Nombre(s)")
paterno.Text = banamex1.Recordset.Fields("Apellido Paterno")
materno.Text = banamex1.Recordset.Fields("Apellido Materno")
razon.Text = banamex1.Recordset.Fields("Razon Social")
direccion.Text = banamex1.Recordset.Fields("Direccion")
calle.Text = banamex1.Recordset.Fields("Calle")
numero.Text = banamex1.Recordset.Fields("Numero")
municipio.Text = banamex1.Recordset.Fields("Municipio")
estado.Text = banamex1.Recordset.Fields("Estado")
pais.Text = banamex1.Recordset.Fields("Pais")
cp.Text = banamex1.Recordset.Fields("Codigo Postal")
email.Text = banamex1.Recordset.Fields("E-mail")
nc.Text = banamex1.Recordset.Fields("cuenta")
telefono.Text = banamex1.Recordset.Fields("Telefono")
sexo.Text = banamex1.Recordset.Fields("Sexo")
End If
End If
End Sub
este es el código que utilizo para insertar:
En este código las claves las inserto de acuerdo a un botón de comando de la lista de botones de comando es decir tengo una serie de claves el usuario solo da click para escoger una de ellas si ya esta en la tabla entonces muestra un msgbox diciendo que ya existe, son 10 las claves que pongo a disposición el usuario no las teclea solo da click en una de ellas
'a,b,c,...,j son los nombres de los comandos que contienen las claves
Private Sub a_Click()'boton de comando a
banamex1.Recordset.FindFirst "clave= '" & a.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta clave se encuentra libre")
     clave.Text = a.Caption  'se colocan en los textbox  correspondientes
    Else
   MsgBox ("YA EXISTE")
   End If
End Sub
Private Sub b_Click()'boton de comando b
banamex1.Recordset.FindFirst ("clave= '" & "B-2017" & "'")
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta clave se encuentra libre")
     clave.Text = b.Caption ' se colocan en los textbox  correspondientes
       Else
   MsgBox ("YA EXISTE")
   End If
End Sub
Private Sub c_Click()
banamex1.Recordset.FindFirst ("clave= '" & "C-3019" & "'")
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta clave se encuentra libre")
    clave.Text = c.Caption
       Else
   MsgBox ("YA EXISTE")
   End If
End Sub
'c1,c2,c3,c4,.......,c10 son cuentas bancarias, por asi decir,  los coloque igual en botones de comando
Private Sub C1_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c1.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c1.Caption 'se colocan en los textbox  correspondientes
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub c10_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c10.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c10.Caption
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub c2_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c2.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c2.Caption
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub c3_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c3.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c3.Caption
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub c4_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c4.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c4.Caption
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub c5_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c5.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c5.Caption
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub c6_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c6.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c6.Caption
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub c7_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c7.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c7.Caption
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub c8_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c8.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c8.Caption
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub c9_Click()
banamex1.Recordset.FindFirst "cuenta= '" & c9.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta se encuentra libre")
     nc.Text = c9.Caption
    Else
   MsgBox ("ESTA CUENTA YA EXISTE")
   End If
End Sub
Private Sub d_Click()
'Call X("D-4021")
banamex1.Recordset.FindFirst ("clave= '" & "D-4021" & "'")
  If banamex1.Recordset.NoMatch Then
     MsgBox ("libre")
     clave.Text = d.Caption
       Else
   MsgBox ("YA EXISTE")
   End If
End Sub
Private Sub e_Click()
banamex1.Recordset.FindFirst ("clave= '" & "E-5023" & "'")
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta clave se encuentra libre")
     clave.Text = e.Caption
       Else
   MsgBox ("YA EXISTE")
   End If
End Sub
Private Sub f_Click()
banamex1.Recordset.FindFirst ("clave= '" & "F-6025" & "'")
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta clave se encuentra libre")
     clave.Text = f.Caption
       Else
   MsgBox ("YA EXISTE")
   End If
End Sub
Private Sub g_Click()
banamex1.Recordset.FindFirst ("clave= '" & "G-7027" & "'")
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta clave se encuentra libre")
    clave.Text = g.Caption
       Else
   MsgBox ("YA EXISTE")
   End If
End Sub
 'momento en que se guardan todos datos incluyendo las claves y cuentas
Private Sub guardar_Click()
'Verifica si la caja de texto Nombre esta vacía.
If Len(Trim(nombre.Text)) = 0 Then
MsgBox ("Debe introducir el Nombre.")
nombre.SetFocus ' Hace que la caja reciba el enfoque.
'Verifica si la caja de texto Apellido esta vacía.
ElseIf Len(Trim(paterno.Text)) = 0 Then
MsgBox ("Debe introducir el Apellido materno.")
paterno.SetFocus ' Hace que la caja reciba el enfoque.
'Verifica si la caja de texto direccion esta vacía.
ElseIf Len(Trim(direccion.Text)) = 0 Then
MsgBox ("Debe introducir la direccion.")
direccion.SetFocus ' Hace que la caja reciba el enfoque.´
'Verifica si la caja de texto municipio esta vacía.
ElseIf Len(Trim(municipio.Text)) = 0 Then
MsgBox ("Debe introducir el municipio.")
municipio.SetFocus
'Verifica si la caja de texto estado esta vacía.
ElseIf Len(Trim(estado.Text)) = 0 Then
MsgBox ("Debe introducir el estado.")
estado.SetFocus ' Hace que la caja reciba el enfoque.
ElseIf Len(Trim(pais.Text)) = 0 Then
MsgBox ("Debe introducir el pais.")
pais.SetFocus ' Hace que la caja reciba el enfoque.
ElseIf Len(Trim(nc.Text)) = 0 Then
MsgBox ("Debe introducir un numero de cuenta bancaria.")
nc.SetFocus ' Hace que la caja reciba el enfoque.
Else
'Aquí se escribe la codificación para almacenar los datos en la Base de datos.
banamex1.Recordset.AddNew
banamex1.Recordset.Fields("clave") = clave
banamex1.Recordset.Fields("nombre(s)") = nombre
banamex1.Recordset.Fields("Apellido Paterno") = paterno
banamex1.Recordset.Fields("Apellido Materno") = materno
banamex1.Recordset.Fields("Razon Social") = razon
banamex1.Recordset.Fields("Direccion") = direccion
banamex1.Recordset.Fields("Calle") = calle
banamex1.Recordset.Fields("Numero") = numero
banamex1.Recordset.Fields("Municipio") = municipio
banamex1.Recordset.Fields("Estado") = estado
banamex1.Recordset.Fields("Pais") = pais
banamex1.Recordset.Fields("Telefono") = telefono
banamex1.Recordset.Fields("E-mail") = email
banamex1.Recordset.Fields("Codigo Postal") = cp
banamex1.Recordset.Fields("cuenta") = nc
banamex1.Recordset.Fields("inicial") = "0.0"
banamex1.Recordset.Fields("final") = "0.0"
If Len(Trim(sexo.Text)) = 0 Then
MsgBox ("Debe especificar el tipo de sexo")
sexo.SetFocus
Else
If LCase(sexo.Text) = LCase("Femenino") Then
banamex1.Recordset.Fields("sexo") = "FEMENINO"
End If
If LCase(sexo.Text) = LCase("Masculino") Then
banamex1.Recordset.Fields("sexo") = "MASCULINO"
End If
 banamex1.Recordset.Update
MsgBox ("El registro ha sido almacenado satisfactoriamente.")
'Limpiamos las cajas.
clave.Text = ""
nombre.Text = ""
paterno.Text = ""
materno.Text = ""
razon.Text = ""
direccion.Text = ""
calle.Text = ""
numero.Text = ""
municipio.Text = ""
estado.Text = ""
pais.Text = ""
telefono.Text = ""
email.Text = ""
cp.Text = ""
nc.Text = ""
End If
End If
End Sub
Private Sub nombre_CauseValidation()
'Verifica si la caja de texto esta vacía.
If Len(Trim(nombre.Text)) = 0 Then
MsgBox ("Debe introducir el Nombre.")
salir = True ' Hace que el enfoque NO pase a otro control.
End If
End Sub
Private Sub materno_CauseValidation()
'Verifica si la caja de texto esta vacía.
If Len(Trim(materno.Text)) = 0 Then
MsgBox ("Debe introducir el Apellido Materno.")
salir = True ' Hace que el enfoque NO pase a otro control.
End If
End Sub
Private Sub pais_CauseValidation()
'Verifica si la caja de texto esta vacía.
If Len(Trim(pais.Text)) = 0 Then
MsgBox ("Debe introducir el pais.")
salir = True ' Hace que el enfoque NO pase a otro control.
End If
End Sub
Private Sub paterno_CauseValidation()
'Verifica si la caja de texto esta vacía.
If Len(Trim(paterno.Text)) = 0 Then
MsgBox ("Debe introducir el Apellido Paterno.")
salir = True ' Hace que el enfoque NO pase a otro control.
End If
End Sub
Private Sub h_Click()
'Call X("H-8029")
banamex1.Recordset.FindFirst "clave= '" & h.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("libre")
     clave.Text = h.Caption
    Else
   MsgBox ("YA EXISTE")
   End If
End Sub
Private Sub i_Click()
banamex1.Recordset.FindFirst "clave= '" & i.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta clave se encuentra libre")
     clave.Text = i.Caption
    Else
   MsgBox ("YA EXISTE")
   End If
End Sub
Private Sub j_Click()
banamex1.Recordset.FindFirst "clave= '" & j.Caption & "'"
  If banamex1.Recordset.NoMatch Then
     MsgBox ("Esta clave se encuentra libre")
     clave.Text = j.Caption
    Else
   MsgBox ("YA EXISTE")
   End If
End Sub
Private Sub telefono_KeyPress(KeyAscii As Integer)
'Hace que cuando se pulse la tecla ENTER pase a la siguiente caja.
If KeyAscii = 13 Then SendKeys "{tab}"
'Define una máscara de entrada para Teléfonos.
MascaraBucarelly "telefono", "(___) ___ ____", KeyAscii, "NUMBER"
End Sub
Private Sub telefono_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
'Bloquea la utilización de la tecla DELETE o SUPR.
If KeyCode = 46 Then KeyCode = 0
End Sub
Private Sub Form_Load()
'Hace que todas las máscaras de entrada se muestren al iniciar la aplicación.
telefono_KeyPress (0)
End Sub
Public Sub x(n As String)
 banamex1.Recordset.FindFirst ("clave del cliente= '" & n & "'")
  If banamex1.Recordset.NoMatch Then
     MsgBox ("libre")
     'banamex1.Recordset.Fields("clave") = n
       Else
   MsgBox ("YA EXISTE")
   End If
End Sub
http://e:e://eso es todo, pero como te digo, la insercion de datos lo hace bien y me manda los mensajes correspondientes, pero si me quiero salir de esa ventana y en el mismo momento,  voy ya sea a modificar,consultar o eliminar y tecleo la clave que almacene minutos antes me dice que no existe , regreso a checarlo a la ventana de altas y doy click sobre la clave que segun no existe  y me dice que si existe. salgo de la ejecucion del proyecto , y vuelvo a ejecutarlo y ahora si me aparece ya sea en consultas, modifica o elimina a veces que si existe en los tres formularios y hay veces  que solo en uno o dos de ellos existe, hay veces que en los tres y de plano cuando no existe. espero y haya sido clara con el codigo y la explicacion . la verdad es que a penas estoy aprendiendo a usar vb6 y no entiendo lo que pasa. ojala y me puedas ayudar.
Gracias de antemano
Es mucho código para revisarlo a fondo y por el momento no tengo mucho tiempo, sólo le he dado una mirada superficial y no he encontrado nada raro, es decir, lo veo bien, sin errores. Tal vez sólo se trate de realizar un "refresh" a los objetos que utilizas, creo que es un DATA o algo por el estilo, ¿no es así?, intenta hacer lo que te digo y me cuentas cómo te fue, si me queda tiempo lo checo a fondo en estos días.
Un dato importante: ¿Conoces el lenguaje SQL? Sería de gran utilidad comenzar a usarlo en tus proyectos, es mucho más sencillo que toda la maraña que tienes [con todo respeto].
Saludos desde México, Juan Pablo E.P.
No se nada del lenguaje sql, con mucho trabajo estoy entendiendo el vb y eso porque mi proyecto me lo piedieron en este programa... pero pues gracias por atender

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas