Default
Google

 SITIO OBSOLETO
LA NUEVA DIRECCIÓN:

http://pio9.com

      Chat | Correo | Tú preguntas | Foro | Léeme |    
 Recuperar  Reparar XP
 Convierte tu  ordenador en  un Osciloscopio
 Controla  totalmente XP
 Cambiar la  Apariencia
 Crackear mi  programa
 Recuperar las  contraseñas de  los usuarios
 Recuperar los  Permisos de los  usuarios NTFS
 Pasa tus discos  y cassettes a  CDROM
 De MID a WAV  de WAV a MID
 Conecta dos  ordenadors por  puerto paralelo
 MACROS en  Word
 Nociones de  Internet
 Recuperar  información de  un disquete o  disco duro
 Hacer un Disco  Virtual en RAM
 Encende-Apaga  ordenador  Automátcmente
 Arranque XP  MBR - BIOS
 Quitar el Botón  de Inicio
 VIRUS keyloger
 Puerto 5000
 Proteger  Carpetas
 FORMATEAR  NTFS - FAT
 Pasar a PDF
     360º
 ¡ No Cambies !
 Hacer imagen
 NetMeeting
 eMule KaZaA
 Yahoo+POP3
 Winzip
 Grabar CD-DVD
 Snagit
 GIF animados
 Eliminar Pop-up
 Xara
 Flash
 Animat Screen
 WinHTTrack
 VNC
 WAP
 La hora
 AceMacro
 Skipe - PalTalk
 Troyanos
 Cortafuego XP
 Otros
 Bloquear Teclas  y Teclado
 XP en CDROM !!
 MSDOS CDROM
 Servidor SMTP  y Envío MSDOS
 Web y Correo    Anónimo !!!
 Instalar Win98
 después de XP
 Game Boy
 Redes
 Discoduro
 Favoritos
 Algunas Páginas
    C
 EyeToy PS2-PC
 Ver Televisión
 HacerPublicidad
 FTP
 Varios
 Preguntas
 Curiosidades
 MUY DIVER :-)
 Unas palabras
 Password
 Hotmail
 Números de
 Serie
 Crack Páginas  Web
 Resumen
 Enlaces


Visual Basic -7

<0> <1> <2> <3> <4> <5> <6> <7> <8> <9> <10> <11> <12> <13> <14>

49.- Base de datos y SQL

Para realizar éste proyecto, previamente hemos construido una Base de Datos con el Access, llamada C:\mibase.mdb y en ella una tabla llamada: mitabla.
En la tabla debe haber dos campos alfanuméricos llamados: Nombre y Edad.

Una vez que tenemos la Base de datos, vamos a Visual Basic y creamos un formulario como el que se indica a la derecha la tabla siguiente.

Los Text3 y Text4 tienen propiedad Multiline True.

Deberás estudiar el funcionamiento de SQL

En algunos proyectos tendremos que abrir la base de datos para poder trabajar, para ello se utilizan éstas instrucciones:

Set con = CreateObject("ADODB.Connection")
con.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & "c:\mibase.mdb")

' Guardar
Private Sub Command1_Click()
Set con = CreateObject("ADODB.Connection")
con.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & "c:\mibase.mdb")
   
nomb = Text1.Text
edad = Text2.Text
sql = "INSERT INTO mitabla (Nombre, Edad) "
sql = sql & " VALUES ("
sql = sql & "'" & nomb & "',"
sql = sql & "'" & edad & "')"
con.Execute (sql)
End Sub

' Ver
Private Sub Command2_Click()
Set con = CreateObject("ADODB.Connection")
con.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & "C:\mibase.mdb")
  
busca = Text5.Text

sql = "SELECT * FROM mitabla WHERE Nombre LIKE  '" & busca & "'"
Set RS = con.Execute(sql)
Do While Not RS.EOF
Text3.Text = Text3.Text & vbCrLf & RS("Nombre")
Text4.Text = Text4.Text & vbCrLf & RS("Edad")

RS.MoveNext
Loop
End Sub


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Para BORRAR Registros, añadimos un nuevo Command6_Click:

Private Sub Command6_Click()
Set con = CreateObject("ADODB.Connection")
con.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & "C:\mibase.mdb")

busca = Text5.Text
sql = "DELETE * FROM prueba WHERE Nombre LIKE  '" & busca & "'"
Set RS = con.Execute(sql)
End Sub




 

Vamos a ver tres formas más de trabajar con Bases de Datos:
1.- Creación mediante el Administrador Visual de datos.
2.- Control mediante el control Data.
3.- Control mediante el control ADODC.

1.- Creación mediante el Administrador Visual de datos (Visdata).

Abrimos un nuevo proyecto EXE Standard.

Complementos/Administrador visual de datos... (Está arriba, en la barra de menú)

Archivo/Nuevo.../Microsoft Access/MDB de la versión 7.0.. -------> Nombre: C:\mibase.mdb

Pulsar botón derecho; en el menú emergente pulsar Nueva tabla. Le damos un nombre: mitabla

Agregar campo y vamos agregando los distintos campos que componen la tabla.

Generar tabla.

Ya la tenemos. Ahora pulsamos dos veces sobre el icono de mitabla y podremos Agregar datos.
Con el botón derecho del ratón podemos entrar en las Propiedades de la tabla y modificar sus parámetros.
(Algunas propiedades son sólo de lectura; el tipo y tamaño no se puede modificar)

Buscar: Podemos Buscar los Registros que tengan en el campo Edad, operador >, Valor 10.

Si queremos volver a editar la tabla, pulsamos con el botón derecho sobre mitabla y luego Diseñar...

Podemos marcar Required, para obligar a rellenar un campo.
Si en ValidationRule ponemos ">100" y en ValidationText "Una edad demasiada avanzada", estamos restringiendo a que coloquen una edad mayor de 100 años.

Podemos hacer búsqueda mediante SQL

 

2.- Control mediante el control Data

Construimos previamente esta base de datos:

Abrimos un nuevo proyecto EXE Standard.

Insertamos en el Formulario un control Data, TextBox y tres Label.

Vamos a Propiedades de Data1
DatabaseName = C:\mibase.mdb
RecordSource = mitabla

(Puede ocurrir que obtengamos un error debido a que el formato de la base de datos no sea el adecuado, tendremos que convertirla a Access 97, Access2000 o Access2002 según se necesite)

Vamos a las Propiedades de los Text:
Text1 y ponemos en DataSource Data1 y en DataField Nombre
Text2 y ponemos en DataSource Data1 y en DataField Edad
Text3 y ponemos en DataSource Data1 y en DataField Ciudad

Ejecutamos y observamos.

(Más adelante estudiaremos las Propiedades del Data1: BOFAction y EOFAction)


Ahora vamos a gestionar la Base de datos anterior con Botones.

Ahora vamos a agregar 4 Botones y realizar la visualización de las fichas mediante los botones.

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

Private Sub Command2_Click()
Data1.Recordset.MoveNext
End Sub

Private Sub Command3_Click()
Data1.Recordset.MovePrevious
End Sub

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

Ejecutamos y observamos.
Cuando superamos el último o el anterior al primero se produce un error.
Lo vamos a corregir de ésta manera:


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

Private Sub Command2_Click()
If Data1.Recordset.EOF Then
' Data1.Recordset.AddNew
Data1.Recordset.MoveLast
Else
Data1.Recordset.MoveNext
End If
End Sub

Private Sub Command3_Click()
If Data1.Recordset.BOF Then
Data1.Recordset.MoveFirst
Else
Data1.Recordset.MovePrevious
End If
End Sub

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

 

 


3.- Control mediante el control ADODC

Abrimos un nuevo proyecto EXE Standard.

Proyecto/Componentes/Microsoft ADO Data Control 6.0 (OLEDB)

Ponemos ese control en el Formulario.                                             

                                                       

Debemos "Conectar" la Base de datos.

Vamos a Propiedades del Adodc1, ConnectionString

Marcamos: Usar cadena de conexión. Pulsamos Generar.

Elegimos el Proveedor: Microsoft Jet 4.0 OLE DB Provider

Le damos a Siguiente >>. Y Seleccionamos la Base de datos con la que vamos a trabajar. Probar.

Ahora vamos de nuevo a Propiedades del Adodc1, RecordSource

Y ponemos 2- adCmdTable y el nombre de la tabla a la que se le aplicarán los comandos: C:\mitabla

Ya hemos preparado el control ADODC1. Ahora vamos a construir el Formulario:

En el DataSource de los Text se pone el nombre del control Adodc1
En el Data Field   de los Text se pone el nombre del campo.

Vamos a las Propiedades del:
Text1 y ponemos en DataSource Adodc1 y en DataField Nombre
Text2 y ponemos en DataSource Adodc1 y en DataField Apellido
Text3 y ponemos en DataSource Adodc1 y en DataField Pais
Text4 y ponemos en DataSource Adodc1 y en DataField Edad.

Ejecutamos y observamos.

En resumen:
- Agregar el control Adocd1
- Propiedad ConectionString: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\mibase.mdb
- Propiedad CommandType: 2 adCmdTable
- Propiedad RecordSource: mitabla


- Propiedades DataSource y DataField de cada Text

Volviendo al control Adodc1 vemos que tiene estas dos Propiedades:
Propiedad BOFAction:
BOF significa antes que el primero, o sea, estamos viendo los registros 5, 4, 3, 2, 1, NADA-BOF
- Si ponemos MoveFirst permanecerán en el primer registro.
- Si ponemos BOF se desactiva el control izquierdo.

Propiedad EOFAction:
EOF significa fin del fichero, o sea, estamos viendo los registros 5, 6,7, 8, 9 * FIN-EOF
- Si ponemos MoveLast permanecerá en el último registro.
- Si ponemos EOF se desactiva el control derecho.
- Si ponemos AddNew podremos Agregar nuevos Registros.


Ahora vamos a gestionar la Base de datos anterior con botones.

Agregamos los botones que indica la siguiente figura:

Private Sub Command1_Click()
Adodc1.Recordset.Fields("Nombre") = Text1.Text
Adodc1.Recordset.Fields("Apellido") = Text2.Text
Adodc1.Recordset.Fields("Pais") = Text3.Text
Adodc1.Recordset.Fields("Edad") = Text4.Text
Adodc1.Recordset.Update
End Sub

Private Sub Command2_Click()
Adodc1.Recordset.AddNew
End Sub

Private Sub Command3_Click()
Confirma = MsgBox("¿Quieres borrar esta ficha?", vbYesNo, "Confirmación")
If Confirma = vbYes Then
Adodc1.Recordset.Delete
MsgBox "Ficha borrada.", , "Borrado"
Else
MsgBox "Cancelación de borrado.", , "No borrado"
End If

End Sub

Private Sub Command4_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
End Sub

Private Sub Command5_Click()
If Not Adodc1.Recordset.BOF Then
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF Then
Adodc1.Recordset.MoveNext
End If
End If
End Sub

Private Sub Command6_Click()
If Not Adodc1.Recordset.EOF Then
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then
Adodc1.Recordset.MovePrevious
End If
End If

End Sub

Private Sub Command7_Click()
End
End Sub




Ahora vamos a realizar un formulario en donde podamos ver
imágenes archivadas en una Base de Datos Access

Baja cuadros.zip, son una serie de imágenes que nos pueden valer para éste ejercicio.

Vamos a verlo de tres formas:

Primera forma:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvbpj01/html/gs0102.asp

Creamos una Base de datos Access llamada C:\Cuadros\cuadros2.mdb
y en ella una tabla llamada mitabla con tres campos:

Nombre (Texto)
Apellido (Texto)
Cuadro   (Objeto OLE)

Podemos rellenar los elementos de la tabla con varios registros:

Los cuadros se introducen mediante:
Botón derecho en el campo Cuadro / Insertar objeto... / Crear desde archivo / Examinar


Vamos a Visual Basic y creamos éste formulario:

Private Conn As ADODB.Connection
Private rs As ADODB.Recordset

Private Sub Form_Load()
'Establecer conexión
Set Conn = New ADODB.Connection
Conn.ConnectionString = _
    "Provider=Microsoft.Jet.OLEDB" & _
    ".4.0;Data Source=" & "C:\cuadros\cuadros.mdb"
    Conn.Open
    
'Abrir recordset
Set rs = New ADODB.Recordset
rs.Open "mitabla", Conn, _
    adOpenKeyset, adLockPessimistic, adCmdTable
    
Set Text1.DataSource = rs
Text1.DataField = "Nombre"

Set Text2.DataSource = rs
Text2.DataField = "Apellido"

Set Image1.DataSource = rs
Image1.DataField = "Cuadro"

End Sub

Con esta idea debería funcionar, pero suele fallar porque los componente de Visual Basic no están actualizados con las nuevas Base de datos de Access.

Además tenemos que poner botones u otros elementos para cambiar de registro.

Hay que tener en cuenta que existen varias versiones de Access: Access 97, Access 2000, Acces 2002.... si tenemos el Office XP, podemos convertir a Access a versiones anteriores mediante:
Herramientas / Utilidades de la base de datos / Convertir base de datos
Al convertir la base de datos, cambia algunas de sus anteriores características.

En algunas ocasiones, si no tenemos el Visual Basic 6 actualizado, tendremos que convertir bases de datos de Acces XP a Access 97.


 

Segunda forma:

Bajamos éste archivo: VBAccessImag.zip lo descomprimimos y lo ejecutamos, observaremos que el código es un poco enrevesado, pero funciona.


Tercera forma:

Digamos que es mi contribución personal, en este caso no tenemos un campo de Objeto OLE, sino un campo de texto en donde guardamos la localización del archivo gráfico.

Creamos una Base de datos Access llamada C:\cuadros2.mdb
y en ella una tabla llamada mitabla con tres campos de Texto:

Rellenamos varios Registros:

Observamos que el campo Imagen es de Texto y en él escribimos la ruta de la imagen.


Vamos a Visual Basic y creamos éste formulario:

Dim Con As ADODB.Connection
Dim RS As New ADODB.Recordset
Dim strConn As String


' Guardar
Private Sub Command1_Click()
Set Con = CreateObject("ADODB.Connection")
Con.Open ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & "C:\cuadros2.mdb")
nomb = Text1.Text apel = Text2.Text imag = Text3.Text SQL = "INSERT INTO mitabla (Nombre, Apellido, Imagen) " SQL = SQL & " VALUES (" SQL = SQL & "'" & nomb & "'," SQL = SQL & "'" & apel & "'," SQL = SQL & "'" & imag & "')" Con.Execute (SQL) End Sub ' Abrir Private Sub Command2_Click() 'Set Con = CreateObject("ADODB.Connection")
'Con.Open ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & "C:\cuadros2.mdb") 'SQL = "SELECT * FROM mitabla " 'Set RS = Con.Execute(SQL) 'RS.CursorType = adOpenDynamic Dim Conn As New ADODB.Connection strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" strConn = strConn & "C:\cuadros2.mdb" Conn.ConnectionString = strConn Conn.Open RS.Source = "SELECT * FROM mitabla" RS.CursorType = adOpenDynamic RS.ActiveConnection = Conn RS.Open End Sub ' Siguiente Private Sub Command3_Click() Text1.Text = RS("Nombre") Text2.Text = RS("Apellido") Text3.Text = RS("Imagen") Image1.Picture = LoadPicture(RS("Imagen")) RS.MoveNext End Sub ' Anterior Private Sub Command4_Click() Text1.Text = RS("Nombre") Text2.Text = RS("Apellido") Text3.Text = RS("Imagen") Image1.Picture = LoadPicture(RS("Imagen")) RS.MovePrevious End Sub Private Sub Form_Load() End Sub

Éste proyecto lo podemos depurar, evitando que salga un error cuando llega al final del archivo EOF o al principio BOF.

También se podría poner controles Drive, Dir y File, para que no tengamos que poner la ruta de la imagen manualmente, sino que la localizamos mediante éstos controles y la agregamos a la base de datos.

Recordar que podemos visualizar una Base de datos con imágenes mediante los formulario del Access como se vió en el Ejercicio Nº 2 de Base de datos



Página siguiente (8) >>

© INICIAte- 2002-2005. Todos los derechos reservados. juandesam@yahoo.com
Prohibida la copia de los textos y dibujos presentados en este sitio web
Diseño web y programación por Juan A. Villalpando



Acquiring image from ProHosting Banner Exchange