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"