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 original
Public 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 original
Module 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 original
cedula-numero nombres-texto congenito-texto
control:
Código Acces:
Ver original
cod-autonumerico cedula-texto nombre-texto congenito-texto hentrada-texto hsalida-texto fentrada-texto fsalida-texto observacionen-texto observacionsal-texto
Alguien ayudeme :(