hola necesito q alguien me ayude como hago un recorrido con indices

kary
23 de Junio del 2004
estoy trabajando en un modulo de captura en visual basic la BD esta en acces y mi problema es q nose como al momento q se capture un dato q ya existe me baya a buscar ala bas e de datos y me mande un aviso q ya existe el dato y si no existe lo guarde
esta usando ADODB.Recordset pero como no me permite esa coneccion nececito buscar otra forma tengo esto
Option Explicit
Dim Conn As ADODB.Connection
Dim RsRecordset As ADODB.Recordset
Dim opcion As String

Private Sub Command1_Click()

End Sub

Private Sub borrar_Click()
Frame1.Enabled = True
Idcliente.SetFocus
opcion = "BAJA"
Deshabilitar
End Sub

Private Sub cmdAceptar_Click()
If opcion = "ALTA" Then
' If comprobarCampos Then
' RsRecordset.MoveFirst
' RsRecordset.Find "IdCliente=" & Idcliente
'If RsRecordset.EOF Then
RsRecordset.AddNew
RsRecordset("IdCliente") = Idcliente
RsRecordset("NomCliente") = NomCliente
RsRecordset("TelCliente") = TelCliente
RsRecordset("DirCliente") = DirCliente
RsRecordset.Update
' LlenarList
Habilitar
Frame1.Enabled = False
' Else
' MsgBox "El Id ya existe", vbCritical
' End If
' End If
End If
If opcion = "EDITAR" Then
RsRecordset.MoveFirst
RsRecordset.Find "IdCliente=" & Idcliente.Text
' If comprobarCampos = True Then
RsRecordset("IdCliente") = Idcliente
RsRecordset("NomCliente") = NomCliente
RsRecordset("TelCliente") = TelCliente
RsRecordset("DirCliente") = DirCliente
RsRecordset.Update
LlenarList
Habilitar
Frame1.Enabled = False
Idcliente.Enabled = True
' End If
End If
If opcion = "BAJA" Then
RsRecordset.MoveFirst
RsRecordset.Find "IdCliente=" & Idcliente.Text
RsRecordset.Delete
LlenarList
Frame1.Enabled = False
Habilitar
End If
End Sub

Private Sub cmdCancelar_Click()
Frame1.Enabled = False
Habilitar
limpiar
Idcliente.Enabled = True
End Sub

Private Sub Form_Load()
Set Conn = New ADODB.Connection
Conn.Open "provider=Microsoft.jet.oledb.4.0;Data Source=" & App.Path & "bd1.mdb;Persist Security Info=False"
Set RsRecordset = New ADODB.Recordset
RsRecordset.Open "clientes", Conn, adOpenDynamic, adLockOptimistic
'LlenarList
Frame1.Enabled = False
End Sub

Sub LlenarList()
Dim Nodo As ListItem
List.ListItems.Clear
RsRecordset.Requery 'refrescamos el recordset
RsRecordset.MoveFirst
While Not RsRecordset.EOF
Set Nodo = List.ListItems.Add(, , RsRecordset("IdCliente"))
'le decimos a la variable nodo que se le añada al contenido del campo Idcliente
'y a su vez añadiendola al ListView
Nodo.SubItems(1) = RsRecordset("NomCliente")
Nodo.SubItems(2) = RsRecordset("TelCliente")
Nodo.SubItems(3) = RsRecordset("dirCliente")
RsRecordset.MoveNext
Wend
List.Refresh
End Sub

Sub Pintar()
Dim Nodo2 As ListItem
Set Nodo2 = List.SelectedItem
'mete el contenido del item seleccionado a Nodo2
RsRecordset.MoveFirst
RsRecordset.Find "IdCliente=" & Nodo2
If Not RsRecordset.EOF Then
Idcliente.Text = RsRecordset("IdCliente")
NomCliente.Text = RsRecordset("NomCliente")
TelCliente.Text = RsRecordset("TelCliente")
DirCliente.Text = RsRecordset("DirCliente")
End If
End Sub

Private Sub Idcliente_KeyPress(KeyAscii As Integer)
If (KeyAscii = 13) Then
RsRecordset.MoveFirst
RsRecordset.Find "IdCliente=" & Idcliente
If RsRecordset.EOF Then
' RsRecordset.AddNew
' RsRecordset("IdCliente") = Idcliente
' RsRecordset("NomCliente") = NomCliente
' RsRecordset("TelCliente") = TelCliente
' RsRecordset("DirCliente") = DirCliente
' RsRecordset.Update
'LlenarList
' Habilitar
'Frame1.Enabled = False
Else
MsgBox "El Id ya existe", vbCritical
End If
End If

End Sub

Private Sub List_Click()
Pintar
End Sub

Private Sub limpiar()
Idcliente.Text = ""
NomCliente.Text = ""
TelCliente.Text = ""
DirCliente.Text = ""
End Sub


Private Sub Idcliente_LostFocus()
RsRecordset.MoveFirst
RsRecordset.Find "IdCliente=" & Idcliente
If RsRecordset.EOF = False Then
' Else
MsgBox "El Id ya existe", vbCritical
Idcliente.SetFocus
End If
End Sub

Private Sub modificar_Click()
Frame1.Enabled = True
Idcliente.SetFocus
opcion = "EDITAR"
Deshabilitar
Idcliente.Enabled = False
End Sub

Private Sub Nuevo_Click()
limpiar
Frame1.Enabled = True
Idcliente.SetFocus
opcion = "ALTA"
Deshabilitar
End Sub

Private Sub Habilitar()
Nuevo.Enabled = True
modificar.Enabled = True
borrar.Enabled = True
End Sub

Private Sub Deshabilitar()
Nuevo.Enabled = False
modificar.Enabled = False
borrar.Enabled = False
End Sub

Rem Function comprobarCampos() As Boolean
Rem If Idcliente = "" Or NomCliente = "" Or TelCliente = "" Or DirCliente = "" Then
Rem MsgBox "Faltan campos por rellenar"
Rem comprobarCampos = False
Rem Else
Rem comprobarCampos = True
Rem End If
Rem End Function

pero como no tengo la referencia micrisoft active x Data objects 2.6 library
y no quieren que la utilice debo buscar otra forma de coneccion
les agradeceria mucho me pudieran ayudar

krizall
23 de Junio del 2004
hola, antes de guardar puedes buscar los datos ingresados, no se si se base en el id cliente pero pupongamos que si

puedes utilizar una sentencia sql
select idcliente from tablas where idcliente='" & controlque tiene el codigo & "'

fi not rs.eof then
quiere decir que si existe
else
no existe
end if

espero te sirva de algo, por cierto podrias utilizar sentencias insert para agregar regristros...