Buenos dias amigos, he hecho un sistema en Vb 2005 el cual es un sistema que controla quien entra con que entra y quien sale y con que sale..
Ahora la Bd use fue acces y ADO para trabajarla, ahora bien yo coloque que cuando un usuario colocar su cedula "123" si ya a utilizado el sistema anteriormente cargue automaticamente sus datos, de resto el tendra que hacerlo de forma manual..
eso lo hice con el evento leave del masketbox para la cedula, bien el problema es que si pongo por ejemplo cedula "123" cuyo nombre es TEST y congenito Familiar. cuando le doy al boton entrada (lo registra como persona que entro al local y limpia los texto) cuando pongo la cedula "22458" que es Pedro, me aparece los datos y la cedula de TEST, porque? es como si no limpiara los data de la anterior busqueda, como puedo resolverlo?
aqui les paso el Codigo del Form que tengo:
FORM1
Código vb:
Ver originalPublic Class Form1
Dim t As New DataTable
Dim fil As Integer = 0
Dim con, find, user As Boolean
Private Sub mostrartexto()
MaskedTextBox1.Text = CStr(t.Rows(fil)("cedula"))
TextBox1.Text = CStr(t.Rows(fil)("nombres"))
ComboBox1.Text = CStr(t.Rows(fil)("congenito"))
End Sub
Private Sub limpia()
TextBox1.Text = ""
TextBox3.Text = ""
ComboBox1.Text = ""
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'con esto hago que el Form este siempre maximixado
Me.WindowState = FormWindowState.Maximized
'con esto hago que el Form se ajuste al tamaño que tiene la pantalla que lo esta ejecutando
Me.Width = Screen.PrimaryScreen.Bounds.Width
Me.Height = Screen.PrimaryScreen.Bounds.Height - 35 'le quito 35 por la barra de menu
MaskedTextBox1.Focus()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
End
End Sub
Private Sub MaskedTextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MaskedTextBox1.GotFocus
MaskedTextBox1.Text = ""
End Sub
Private Sub MaskedTextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles MaskedTextBox1.Leave
If MaskedTextBox1.Text = "" Then
con = False
Else
con = True
conexion()
table.Open("SELECT * FROM usuarios WHERE cedula= " & MaskedTextBox1.Text & "", conex, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
If table.EOF Then
find = False
limpia()
'table.Close()
Else
find = True
user = True
Dim cone As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=registro.mdb"
Dim sql As String = "SELECT * FROM usuarios WHERE cedula=" & MaskedTextBox1.Text
Dim dataap As New OleDb.OleDbDataAdapter(sql, cone)
dataap.Fill(t)
dataap.Dispose()
mostrartexto()
End If
End If
If con = True Then
conex.Close()
End If
If find = True Then
TextBox3.Focus()
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If MaskedTextBox1.Text = "" Or TextBox1.Text = "" Or ComboBox1.Text = "" Then
con = False
MsgBox("Campos Vacios, no se Puede realizar la Operacion", MsgBoxStyle.Critical, "Sistema")
Else
'Try
con = True
conexion()
If user = True Then
'El Usuario Existe en la Bd no lo Inserto
'Busco si el Usuario ya a entrado en el Sistema pero no a Salido.
table.Open("SELECT * FROM control WHERE cedula='" & MaskedTextBox1.Text & "' and hsalida='NADA'", conex, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
If table.EOF Then
'No Encontro nada, es decir el Usuario, entra por Primera vez.
'Inserto el Registro de Entrada
table.Open("INSERT INTO control (cedula,nombre,congenito,hentrada,hsalida,fentrada,fsalida,observacionen,observacionsal) VALUES (" & MaskedTextBox1.Text & ",'" & TextBox1.Text & "','" & ComboBox1.Text & "','" & Label8.Text & "','NADA','" & Label7.Text & "','NADA','" & TextBox3.Text & "','NADA')", conex, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
MsgBox("Entrada Añadida")
Else
'El Usuario ya habia entrado, por lo tanto no puede volver a entrar
MsgBox("Usted ya Entro!, por favor llene el control de Salida para volver a entrar", MsgBoxStyle.Critical, "Sistema")
End If
Else
'El Usuario es Nuevo lo inserto en la Bd del Sistema
table.Open("INSERT INTO usuarios (cedula,nombres,congenito) VALUES (" & MaskedTextBox1.Text & ",'" & TextBox1.Text & "','" & ComboBox1.Text & "')", conex, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
'table.Close()
'Inserto el Registro de Entrada
table.Open("INSERT INTO control (cedula,nombre,congenito,hentrada,hsalida,fentrada,fsalida,observacionen,observacionsal) VALUES (" & MaskedTextBox1.Text & ",'" & TextBox1.Text & "','" & ComboBox1.Text & "','" & Label8.Text & "','NADA','" & Label7.Text & "','NADA','" & TextBox3.Text & "','NADA')", conex, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
MsgBox("Entrada Añadida")
End If
'Catch ex As Exception
'MsgBox(ex.Message)
'End Try
End If
If con = True Then
conex.Close()
con = False
limpia()
MaskedTextBox1.Focus()
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label7.Text = DateAndTime.Today
Label8.Text = DateAndTime.TimeOfDay
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If MaskedTextBox1.Text = "" Or TextBox1.Text = "" Or ComboBox1.Text = "" Then
con = False
MsgBox("Campos Vacios, no se Puede realizar la Operacion", MsgBoxStyle.Critical, "Sistema")
Else
'Try
con = True
conexion()
If user = True Then
'El Usuario Existe en la Bd no lo Inserto
'Busco si el Usuario ya a entrado en el Sistema pero no a Salido.
table.Open("SELECT * FROM control WHERE cedula='" & MaskedTextBox1.Text & "' and hentrada='NADA'", conex, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
If table.EOF Then
'No encontro nada Es decir el Usuario ya entro...
'table.Open("INSERT INTO control (cedula,nombre,congenito,hentrada,hsalida,fentrada,fsalida,observacionen,observacionsal) VALUES (" & MaskedTextBox1.Text & ",'" & TextBox1.Text & "','" & ComboBox1.Text & "','" & Label8.Text & "','NADA','" & Label7.Text & "','NADA','" & TextBox3.Text & "','NADA')", conex, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
table.Close()
table.Open("UPDATE control SET hsalida='" & Label8.Text & "', fsalida='" & Label7.Text & "', observacionsal='" & TextBox3.Text & "' WHERE cedula='" & MaskedTextBox1.Text & "' and hsalida='NADA'", conex, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
MsgBox("Salida Añadida")
Else
'El Usuario ya habia entrado
MsgBox("Usted ya Entro, por favor llene el control de salida para volver a entrar", MsgBoxStyle.Critical, "Sistema")
End If
Else
'El usuario es nuevo y por lo tanto tubo que haberse registrado en la entrada
MsgBox("El Usuario es nuevo en el Sistema y no tiene Registro de Entrada, por lo tanto, Registre su Entrada, para luego la Salida!", MsgBoxStyle.Critical, "Sistema")
End If
'Catch ex As Exception
'MsgBox(ex.Message)
'End Try
End If
If con = True Then
conex.Close()
con = False
limpia()
MaskedTextBox1.Focus()
End If
End Sub
End Class
y el Modulo:
Module1
Código vb:
Ver originalModule Module1
' Creo table como un recorset (aca se cargan datos ya sea de SELECT o INSERT o cualuier otro
Public table As New ADODB.Recordset
' Creo command que son los comandos me permitira ejecutar comandos
Public comand As New ADODB.Command
'Creo Conex que manejara la conexion como ubicacion de la BD entre otras
Public conex As New ADODB.Connection
Public Sub conexion()
With conex
.Provider = "microsoft.jet.oledb.4.0"
.ConnectionString = "Data Source='registro.mdb'"
.Open()
End With
End Sub
End Module
la Bd se llama Registro, y tiene 2 tablas:
Usuario:
Código Acces:
Ver originalcedula-numero
nombres-texto
congenito-texto
control:
Código Acces:
Ver originalcod-autonumerico
cedula-texto
nombre-texto
congenito-texto
hentrada-texto
hsalida-texto
fentrada-texto
fsalida-texto
observacionen-texto
observacionsal-texto
Alguien ayudeme :(