Hola:
El asunto es al vesrre, primero se hace la base de datos, con la tabla o las tablas necesarias, para tu caso, crea una base en blanco, luego rea una tabla en tiempo de diseño, el primer dato IdLibro autonumerico, (y campo clave ponele la llavecita) el segundo Nombre
texto, el tercero autor, texto, el cuarto tema, texto, el quinto estado numerico. La tabla llamala libro
luego de cerrada esta tabla, se abre para hacer otra en tiempo de diseño que establesca los distintos estados, IdEstado, Detalle
en el detalle pondremos los distintos estados, bueno, a restaurar, inusable, disponible, prestado, desaparecido etc. la tabla llamala estado
No hace falta que uses visual basic para manejar estos datos, pero si queres hacerlo, entonces en un formulario nuevo, haces un abl, o sea un alta baja modificaciones.Incluis en proyecto, referencias microsoft ActiveX Data Objetc 2.6 Library, y en el general del formulario declaras la conexion y el recordset.
Public cn As New Connection
Public rs As New Recordset
En el form_load abris la conexion este texto esta para una base de access 2000 o 2002 que se llama libros.mdb y que estara ubicada en la misma carpeta del proyecto junto con los formularios.
If cn.State = 1 Then cn.Close
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\libros.mdb;Persist Security Info=False"
Luego tendras que hacer un cuadro de texto para cada dato, o una grilla que contenga todos los datos. Para tu uso, la grilla puede ser lo mas conveniente, en este caso, usas microsoft flexgrid, para lo que en proyectos componentes, micrososft flex grid 6.0 Para esto tenes que tener actualizado tu visual con el service pack 5 y 6
Luego tenes que poner las teclas para cada funcion, como buscar, modificar, eliminar, nuevo
Para buscar, por el numero de Id el codigo seria:
dim Id%
id=InputBox"Ingrese el Id a Buscar. "
if Id<>0 then
if rs.state=1 then rs.close
rs.open "Select * from libro where IdLibro = " & Id , cn, adOpenStatic, adLockPessimistic
end if
ya esta cargado el recorset con la consulta
para cargar la grilla
se usa primero el format string, que pone el nombre de los campos en la primera linea. La grilla se llamara gri1( en este caso uso una procedimiento llamado lagrilla)
Public Sub lagrilla()
With Gri1
.Clear
.FormatString = "IdLibro|Nombre|Autor| Tema|Estado"
.ColWidth(0) = 800 'aca defino el ancho de cada columna
.ColWidth(1) = 1800
.ColWidth(2) = 900
.ColWidth(3) = 1300
.ColWidth(4) = 800
.Rows = 1 ' estado inicial despues de los titulos
End With
End Sub
y en el mismo codigo que use para la consulta del buscar llamo al procedimiento y cargo la grilla
lagrilla
if rs.recordcount>0 then
Do While rs.EOF = False
grilla.AddItem rs.Fields(0= & vbTab & rs.Fields(1) & vbTab & rs.Fields(2) & vbTab & rs.Fields(3) & vbTab & rs.Fields(4)
rs.MoveNext
Loop
else
msgbox "No se ha encontrado coincidencia"
end if
y ya esta cargada la grilla
Para buscar por el nombre o el autor igual, solo que en el where de la consulta ponemos where Nombre like '" & nombre & "%'", cn, adOpenStatic, adLockOptimistic
Previamente, habremos declarado una variable de cadena nombre y la habremos cargado con un inputbox
Dim nombre$
nombre="Ingrese Las primeras letras del nombre"
Ese es el buscar, con todas sus opciones
Luego el nuevo registro, al apretar el comando nuevo,
Dim nombre$, autor$,tema$, estado%
Cuando hacemos el inputbox para estado, aclaramos que se debe poner un numero segun el estado. y podemos poner un if que no permita seguir si el numero no esta entre los establecidos
If rs.State = 1 Then rs.Close
cn.Execute "Insert Into Libro (Nombre, Autor, Tema, Estado) Values(' " & nombre & " ', ' " & autor & _
"', '" & tema & "', " & estado & ")"
End If
En este caso, no use el recordset, sino que opere directamente sobre la conexion con el cn.Execute. Si usara el recorset seria
If rs.State = 1 Then rs.Close
rs.Open "Insert Into Libro (Nombre, Autor, Tema, Estado) Values(' " & nombre & " ', ' " & autor & _
"', '" & tema & "', " & estado & ")"cn, adOpenStatic, adLockPessimistic
funciona igualmente
Para modificar, podemos habilitar el buscar, y que al hacer click sobre la grilla nos guarde el Id
Id=gri1.textmatrix(gri1.rowsel,1)
y luego ingresar los datos de nuevo, como si fuera un nuevo registro, y usar la sentencia:
if rs.state=1 then rs.close
cn.Execute "Update Dueño Set Nombre = '" & nombre & "', Autor = '" & _
autor & "', Tema = '" tema & ", Estado = " & estado Where IdLib = " & id
Igual con el recordset
if rs.state=1 then rs.close
rs.Open "Update Dueño Set Nombre = '" & nombre & "', Autor = '" & _
autor & "', Tema = '" tema & ", Estado = " & estado Where IdLib = " & id ,cn, adOpenStatic, adLockPessimistic
Bueno, ya tenes paa entretenerte
Dios te bendiga
Saludos
Antonio