Ayuda con un prog de ABM

c_cydejko
08 de Diciembre del 2004
Hola amigo, soy de Argentina!
Y quisiera saber si me pueden dar una mano estoy haciendo una aplicacion en visual basic en el cual el componente que uso para enlazar mi base de datos es el Control DATA, el problema que tengo es el siguiente, cuando agrego un registro me diga que si ya agregue ese registro o si existe, y que me permita guardarlo y que cuando lo guarde me quede todo bloqueado, asi de esa manera si despues lo quiero modificar no me tire error.

Aqui les envio la estructura de mi sistema, si alguien me quiere ayudar a mejorarlo se los agradeceria.


Private Sub btnAgregar_Click()
Data1.Recordset.AddNew
txtApellidoNombre.Enabled = True
txtLegajo.Enabled = True
txtDireccion.Enabled = True
txtTelefono.Enabled = True
txtSueldoNeto.Enabled = True




End Sub

Private Sub btnAnterior_Click()
Data1.Recordset.MovePrevious
If Data1.Recordset.BOF Then
Data1.Recordset.MoveFirst
MsgBox "A llegado al Primer Registro !!!!", vbInformation + vbDefaultButton1 + vbDefaultButton2
End If
End Sub

Private Sub btnBuscarRegistro_Click()
Dim Buscado As String, Criterio As String
Buscado = InputBox("Que Nombre Deseas Consultar?")
Criterio = "APENOMB Like '*" & Buscado & "*'"
Data1.Recordset.FindFirst Criterio
If Data1.Recordset.NoMatch Then
MsgBox ("Nombre No Localizado")
Data1.Recordset.MoveLast
End If
End Sub

Private Sub btnCerrarAlta_Click()
Unload Form2
End Sub

Private Sub btnGuardar_Click()
Data1.Recordset.Update
MsgBox "el registro se a guardado correctamente", vbInformation + vbDefaultButton1 + vbDefaultButton2
End Sub

Private Sub btnModificar_Click()
Data1.Recordset.Edit
txtApellidoNombre.Enabled = True
txtLegajo.Enabled = True
txtDireccion.Enabled = True
txtTelefono.Enabled = True
txtSueldoNeto.Enabled = True
End Sub

Private Sub BtnPrimero_Click()
Data1.Recordset.MoveFirst
End Sub

Private Sub btnSiguiente_Click()
Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then
Data1.Recordset.MoveLast
MsgBox "a llegado al Ultimo Registro !!!", vbDefaultButton1 + vbDefaultButton2
End If
End Sub

Private Sub BtnUltimo_Click()
Data1.Recordset.MoveLast
End Sub

Private Sub txtEliminar_Click()
Dim r As Integer
On Error GoTo RutinaDeError
r = MsgBox("Este es un mensaje Critico del Sistema" _
& vbClf & "Los efectos de esta acción son IRREVERSIBLES" _
& vbClf & "Desea Eliminar el Presente Registro", 1 + 32 + 0, "Alerta!!!")

If r <> vbOK Then Exit Sub
Data1.Recordset.Delete
Data1.Recordset.MoveNext
If Data1.Recordset.EOF Then
Data1.Recordset.MoveLast
End If
Exit Sub
RutinaDeError:
r = MsgBox(Error, vbOKOnly, "Se Produjo un Error:")
Data1.UpdateControls
End Sub


mvallejos
08 de Diciembre del 2004
Hola, yo también soy Argentino, vivo en Santa Fe

Tu gran problema es que hacés transacciones de datos con controles enlazados, eso es más facil de implementar, pero después te da mas problemas que soluciones

Vas a tener que investigar sentencias transaccionales de Ansi SQL

INSERT INTO
SELECT INTO
UPDATE
DELETE

y ejecutarlos con el método Execute del Objeto Database

Uno de los grandes problemas de hacer esto con recordsets y/o controles enlazados, es que no son transacciones controladas, es decir, no se puede volver atrás (RollbackTrans) si , en un conjunto de actualizaciones, una falla.

En síntesis, un peligro

Saludos