necesito urgente ayuda con ado

Flo
04 de Agosto del 2004
toy haciendo un proyecto de la unviersidad y pues tengo problemas para crear el boton de actualizar todos los demas funcionan referenciandolos a una base de datos de access usando ado y alli en la base de datos se van hacia el query llamado proyecto aqui esta el codigo necesito es crear el actualizar segun los codigos que aqui puse espero me puedan ayudar.
Private Sub Actualizar_Click()
On Error GoTo maneja
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
con.Open "dsn=bienes2;uid=sa;pwd=;"
cmd.ActiveConnection = con
cmd.CommandText = "select * from proyecto where ER =" & Text1.Text
Set rs = cmd.Execute
rs.Update
MsgBox "no hay registro"


Exit Sub
maneja:
MsgBox "ha ocurrido un error en tiempo de ejecucion" & Err.Number & "-" & Err.Description
Resume Next

End Sub

Private Sub Borrar_Click()
On Error GoTo maneja
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
con.Open "dsn=bienes2;uid=sa;pwd=;"
cmd.ActiveConnection = con
cmd.CommandText = "delete * from ER where ER = " & Text1.Text
Set rs = cmd.Execute
MsgBox "se borro un registro"
Exit Sub
maneja:
MsgBox "ha ocurrido un error en tiempo de ejecucion" & Err.Number & "-" & Err.Description
Resume Next
End Sub

Private Sub Consultar_Click()

On Error GoTo maneja
If Text1.Text = "" Then
MsgBox ("introdusca un numero de ER para Poder Consultar")
Text1.SetFocus
Else
Text6.Text = ""
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
con.Open "dsn=bienes2;uid=sa;pwd;"
cmd.ActiveConnection = con
cmd.CommandText = "select * from proyecto where ER = " & Text1.Text
Set rs = cmd.Execute
If Not rs.EOF Then
Text1.Text = rs.Fields("ER").Value
Text2.Text = rs.Fields("departamento").Value
Text6.Text = rs.Fields("codigo activo").Value
Text9.Text = rs.Fields("avaluo1").Value
Else
MsgBox "no hay registro"
End If
End If
Exit Sub
maneja:

End Sub

Private Sub Grabar_Click()
On Error GoTo manejaerror
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
Set rs = New ADODB.Recordset
con.Open "dsn=bienes2;uid=sa;pwd=;"
cmd.ActiveConnection = con
cmd.CommandText = "select * from proyecto where ER=" & Text1.Text
Set rs2 = cmd.Execute
If Not rs2.EOF Then
MsgBox "El registro a insertar ya existe"
Text1.Text = ""
Text1.SetFocus
Else
rs.CursorLocation = adUseClient
rs.CursorType = adOpenDynamic
rs.LockType = adLockBatchOptimistic
rs.Open "select * from proyecto where 1 = 2", con
rs.AddNew
rs("ER").Value = Text1.Text
rs("departamento").Value = Text2.Text
rs.ActiveConnection = con
rs.UpdateBatch
MsgBox "registro guardando exitosamente"
End If
manejaerror:
If Err.Number <> 0 Then
msgboxerr.descripcion
End If
Exit Sub
maneja:
Resume Next
End Sub

flo
04 de Agosto del 2004
alguien podria ayudarme en verdad es urgente

semperfimxl
04 de Agosto del 2004
Si lo que quieres en ese boton actualizar es cambiar los datos del registro que se carga en tu select con los valores actuales de tus textboxes entonces necesitas poner, antes del rs.update que tienes en ese evento, lo siguiente:

rs.Fields("departamento").Value = Text2.text
rs.Fields("codigo activo").Value = Text6.Text
rs.Fields("avaluo1").Value = Text9.Text =

y despues viene, ahora si...

rs.update

'....

Se omite el primer campo (Text1.Text) ya que resulta obvio que el campo correspondiente en el recordset siempre sera igual a dicho Text1.Text, pues es la base de tu consulta...

semperfimxl
04 de Agosto del 2004
Correccion:
rs.Fields("avaluo1").Value = Text9.Text

..

Respecto a la omision de actualizar el recordset con el contenido del Text1.Text, puedes actualizarlo tambien si te es necesario... es decir, si despues de obtener el record mediante el boton de consulta, el usuario puede cambiar el contenido de Text1.Text para asignarle un nuevo valor, aunque supongo que dicho campo es tu "llave de acceso" y no debe permitirse al usuario su cambio una vez localizado el registro a modificar, pues entonces, como estas re-ejecutando la consulta, el recordset no va a localizar el nuevo valor, y si lo localiza, dicho registro corresponderia a uno diferente del que se supones debes actualizar... OJO con esa situacion ...

semperfimxl
04 de Agosto del 2004
Una ultima cuestion...
Veo que en tu codigo, repites lo mismo en cada uno de los botones ...
'...
Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
con.Open "dsn=bienes2;uid=sa;pwd=;"
cmd.ActiveConnection = con
'...

Puedes hacer mas eficiente tu codigo moviendo los DIMs:

Dim con As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset

a la parte superior del area de codigo (antes de cualquiera de los eventos/metodos/procedimientos y de esta manera, darles tratamiento de variables globales en tu forma...

Despues, utiliza el evento _Load de tu Form -Form1_Load() - para abrir las conexiones y establecer las demas propiedades solo una vez, ya que las mismas perduraran durante el tiemo que tu forma este cargada ...

Private Sub Form1_Load()
Set con = New ADODB.Connection
Set cmd = New ADODB.Command
con.Open "dsn=bienes2;uid=sa;pwd=;"
cmd.ActiveConnection = con

'...
End Sub


Por ultimo (creo), en el evento _Unload() de tu Form - Form1_Unload() -, cierras la conexion y liberas los recursos asignados a estas variables:

Private Sub Form1_Unload( ... )
con.Close

Set rs = Nothing
Set con = Nothing

End Sub

Haciendo lo anterior eliminas todas esas instrucciones de cada uno de los botones, el codigo te resulta mas pequeño y eficiente a la hora de correrlo porque no tienes que estar estableciendo la conexion al servidor cada vez que oprimes un boton en tu forma...