Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Dar de alta un cliente

Estas en el tema de Dar de alta un cliente en el foro de Visual Basic clásico en Foros del Web. Hola muy buenas, tengo en un formulario los tipicos textbox y el boton agregar cliente, pues bien, para mi eso es facil y lo tenía ...
  #1 (permalink)  
Antiguo 13/08/2008, 16:48
Avatar de er_davilito  
Fecha de Ingreso: julio-2008
Ubicación: La Línea
Mensajes: 10
Antigüedad: 15 años, 9 meses
Puntos: 0
Dar de alta un cliente

Hola muy buenas, tengo en un formulario los tipicos textbox y el boton agregar cliente, pues bien, para mi eso es facil y lo tenía bien,pero a la hora de hacer que meta por segunda vez al mismo cliente,al ser llave(nombre) me salía el error de datos duplicados, pues bien,hice esto.

Private Sub Command1_Click()

Set conexion = New ADODB.Connection
conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\bd1.mdb;Persist Security Info=False"

Set record = New ADODB.Recordset
sql = "SELECT nombre FROM clientes"
record.Open sql, conexion


If Text1.Text = record!nombre Then
MsgBox "El Cliente ya está Registrado", , "Atención"
Else
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then
MsgBox "Es obligatorio rellenar los 3 primeros campos"
Else
If Text4.Text = "" Then
Text4.Text = 0
End If

If Text5.Text = "" Then
Text5.Text = "Sin Correo Electrónico"
End If

Set conexion = New ADODB.Connection
conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\bd1.mdb;Persist Security Info=False"

sql = "INSERT INTO clientes VALUES ('" & Text1.Text & "','" & Text2.Text & "','" & Text3.Text & "','" & Text4.Text & "','" & Text5.Text & "')"

conexion.Execute sql
conexion.Close

MsgBox "Cliente Registrado"

End If
End If

-y me sale el siguiente error:
El valor de BOF o EOF es true, o el actual registro se eliminó, la operación solicitada requiere un registro actual.

El problema es k no se hacer bien la busqueda del campo de la llave para que me diga que el cliente está ya registrado o no. por favor ayudenme, tngo 3 problemas cm éste en mi aplicación, en CLIENTES, PROVEEDORES y CITAS DE UNA AGENDA.

Os lo agradeceré muchisimo de verdad. Un Saludo
  #2 (permalink)  
Antiguo 13/08/2008, 17:36
Avatar de er_davilito  
Fecha de Ingreso: julio-2008
Ubicación: La Línea
Mensajes: 10
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Dar de alta un cliente

me he dado cuenta k me guarda x ejemplo al modificar las citas,cuando hay campos llenos(los he llenado desde access) en la tabla citas, sino no.
  #3 (permalink)  
Antiguo 14/08/2008, 01:47
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Dar de alta un cliente

Hola, muy buenas

lo que no entiendo en ése código es porqué abres dos veces la misma conexión, lo normal sería hacer la conexión al abrir el programa y cerrarla al salir (declarando la variable como pública) y así te serviría para todos los módulos de la aplicación.

En cuanto a la estructuración del código.. bueno, yo lo haría así:

Código:
' primero comprobamos los datos de los TextBox
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then
    MsgBox "Es obligatorio rellenar los 3 primeros campos"
    ' salimos del procedimiento
    Exit Sub
End If
If Text4.Text = "" Then Text4.Text = 0
If Text5.Text = "" Then Text5.Text = "Sin Correo Electrónico"
' ahora abrimos la conexión (ver mi nota de arriba)
Set conexion = New ADODB.Connection
conexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\bd1.mdb;Persist Security Info=False"
' y un recordset con el nombre del cliente
Set record = New ADODB.Recordset
record.CursorLocation = adUseClient ' obligatorio para la propiedad RecordCount
sql = "SELECT nombre FROM clientes WHERE nombre = '" & Text1.Text & "'"
record.Open sql, conexion
' si la consulta arroja algún registro, es que el cliente ya existe
If record.RecordCount > 0 Then
    MsgBox "El Cliente ya está Registrado", , "Atención"
    ' cerramos la conexión y salimos del procedimiento
    conexion.Close
    Exit Sub
End If
' grabamos los datos en la tabla
sql = "INSERT INTO clientes VALUES ('" & Text1.Text & "','" & Text2.Text & "','" & Text3.Text & "','" & Text4.Text & "','" & Text5.Text & "')"
conexion.Execute sql
conexion.Close
MsgBox "Cliente Registrado"

Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:32.