PROGRAMACIÓ D'APLICACIONS EDUCATIVES AMB VISUAL BASICMÒDUL 5ENRERA
PRÀCTICA 1 2 3 4 (pràctica optativa)
 
Executar el programa m5p3.exe per conèixer el seu comportament.

Nota 1: en aquest cas el programa a l'executar-se no trobarà el fitxer de dades direc.mdb i no funcionarà correctament degut a que no s'executa el programa en el directori correcte. Per tal que no passi, executeu-lo des del directori VBCurs\VBHtml\vibam5\m5p3.

Veure el llistat del codi del programa, m5p3.

Executar Visual Basic per editar el projecte (acabat): m5p3.vbp.

Nota 2: vegeu nota 1.


Treball amb bases de dades Access

El Visual Basic permet llegir bases de dades de tipus Paradox, dBase, Foxpro, Access, Btrieve i ODBC. També permet corregir, afegir i esborrar-ne registres de les bases de dades. El que no permet és crear-les.

En aquesta activitat es crea un programa que interacciona amb una base de dades d'adreces Internet feta en Access, que solament té una classe de registres, amb els camps: ID, Connexió, Temes, Telèfons, Notes i Interès.

En aquesta activitat fareu un formulari amb els botons de la figura per tal de conèixer una mica les utilitats del control de dades. El formulari final tindrà un aspecte semblant al següent i estarà connectat a la taula ADRECES d'una base de dades d'Access:





Fase de disseny de la interfície d’usuari

L'objecte fonamental utilitzat és el control de dades, que té la propietat DatabaseName, a la qual li assignareu el camí i el nom del fitxer de base de dades a utilitzar, i també té la propietat RecordSource a la qual li assignareu la taula (conjunt de registres) dins la base de dades que voleu utilitzar.

Després heu de crear uns camps de text on introduireu les dades dels camps. Els quadres de text tenen la propietat DataSource que serveix per lligar el control de dades amb un camp del registre actiu de la taula associada (RecordSource).


Tema: Data Control Subtema: tots els subtemes


Cal dir que en el moment de carregar el programa, el control de dades obre la base de dades que té escrita en la propietat DatabaseName i llegeix el primer registre.

Abans de crear un nou projecte heu de crear el directori C:\VBCurs\VBActivi\m5\p3 i copiar en ell la base de dades Access DIREC.MDB. Les propietats dels objectes d'aquest projecte que anomenareu m5p3 i que desareu al directori anterior són:

Objecte

Propietat

Valor

Formulari (1)

(Nombre)

frmDadesInternet

 

Caption

Base de dades d'adreces Internet

Control de dades (2)

(Nombre)

datInternet

 

Caption

Base de dades d'Internet

 

DatabaseName

Direc.mdb

 

RecordSource

Adreces

Botó Cercar Següent (3)

(Nombre)

cmdCercarSegüentx

 

Caption

Cercar següent

Botó Cercar (4)

(Nombre)

cmdCercar

 

Caption

Cercar

Botó Esborrar (5)

(Nombre)

cmdEsborrar

 

Caption

Esborrar

Botó Anterior (6)

(Nombre)

cmdAnterior

 

Caption

Anterior

Botó Nou (7)

(Nombre)

cmNou

 

Caption

Nou

Botó Últim (8)

(Nombre)

cmdÚltim

 

Caption

Últim

Botó Següent (9)

(Nombre)

cmdSegüent

 

Caption

Següent

Botó Primer (10)

(Nombre)

cmdPrimer

 

Caption

Primer

Caixes de text

   

Caixa de text a cercar (11)

(Nombre)

txtTextACercar

Caixa del camp ID (12)

(Nombre)

txtID

 

DataSource

datInternet

 

DataField

[ID]

Caixa del camp Adreça (13)

(Nombre)

txtAdreça

 

DataSource

datInternet

 

DataField

[Adreça]

Caixa del camp Connexió (14)

(Nombre)

txtConnexió

 

DataSource

datInternet

 

DataField

[Connexió]

Caixa del camp Temes (15)

(Nombre)

txtTemes

 

DataSource

datInternet

 

DataField

[Temes]

Caixa del camp Telèfon (16)

(Nombre)

txtTelèfon

 

DataSource

datInternet

 

DataField

[Telèfon]

Caixa del camp Notes (17)

(Nombre)

txtNotes

 

DataSource

datInternet

 

DataField

[Notes]

Caixa del camp Interès (18)

(Nombre)

txtInterès

 

DataSource

datInternet

 

DataField

[Interès]

Llista combinada (19)

(Nombre)

cboCamps

 

Style

2 - Dropdown List



Hi ha les etiquetes que van davant de les caixes de text que no les posem aquí, però podeu construir-les a partir del dibuix del formulari que hi ha al principi d'aquesta pràctica.


Explicació de com es lliga el formulari i els seus objectes amb la base de dades:

Per tal de connectar dades de la base de dades DIREC.MDB des del Visual Basic heu realitzat els passos següents:

  • Creació d'un objecte del tipus Control de dades y assignació de les propietats que el vinculen amb una taula o consulta de Microsoft Access:

    • Propietat (Nombre): datInternet.. Aquest nom és important perquè s'utilitza per lligar les caixes de text a les dades escollides, tal com s'esmenta més avall.

    • Propietat DataBaseName: "Direc.mdb. Aquesta propietat crea un vincle entre l'objecte y la base de dades.

    • Propietat RecordSource: "ADRECES". Aquesta propietat lliga l'objecte datInternet a la taula ADRECES.

Tema: Data Control Subtema: Binding a Control to a Data Control

  • Vinculació de les caixes de text als camps de la taula o consulta escollida, assignant els valors de les propietats esmentades a continuació:

    • Propietat DataSource: datInternet. Fixeu-vos que la caixa de text es vincula a les dades de l'objecte datInternet definit en el paràgraf anterior.

    • Propietat DataField: el nom del camp que es vulgui assignar a la caixa de text: [ID],[Adreça], etc.

En aquest projecte també heu afegit una llista combinada, que és un objecte que utilitzeu per presentar una llista de valors en la qual podeu escollir un d'ells. En aquest cas, podreu escollir el camp en què fareu cerca de dades. La propietat que fareu servir per emplenar la llista és: AddItem.


Tema: Combo Box Subtema: tots els subtemes



Fase de programació de respostes a events

Declaracions globals

Declaracions de variables en l'àmbit del formulari:
    Const IDYES = 6
    Const MB_OK = 0
    Const MB_ICONSTOP = 16
    Const MB_YESNO = 4

Aquestes constants s'utilitzen més avall


Tema: MsgBox Subtema: MsgBox


Mètodes associats a l'event Click

En aquest projecte, els botons de comandament que hi apareixen mostren, en clicar-los, els registres: primer, últim, següent al de la pantalla i anterior al de la pantalla. Quan es canvia de registre es desen automàticament les dades de la pantalla.

Per als botons Primer, Següent i Anterior:
    Sub cmdPrimer_Click()
      datInternet.Recordset.MoveFirst
    End Sub
    
    Sub cmdAnterior_Click()
      On Error GoTo ErrcmdAnterior
    
      datInternet.Recordset.MovePrevious
      Exit Sub
    ErrcmdAnterior:
      Resume Next
    End Sub
    
    Sub cmdSegüent_Click()
      On Error GoTo ErrcmdSegüent
    
      datInternet.Recordset.MoveNext
      Exit Sub
    ErrcmdSegüent:
      Resume Next
    End Sub
    
    Sub cmdÚltim_Click()
      datInternet.Recordset.MoveLast
    End Sub


Tema: Data Access Subtema: veure propietats, Language, etc..


Per al botó Esborrar:

Per esborrar un registre cal validar l'entrada.
    Sub cmdEsborrar_Click()
      On Error GoTo ErrcmdEsborrar
    
      Dim contestació As Integer
      Dim Missatge As String
    
      Missatge = "Voleu esborrar el registre que hi ha a la pantalla?"
      contestació = MsgBox(Missatge, MB_ICONSTOP + MB_YESNO)
      If contestació = IDYES Then
        datInternet.Recordset.Delete
        datInternet.Recordset.MoveNext
        If datInternet.Recordset.EOF Then
          datInternet.Recordset.MovePrevious
        End If
      End If
    
    ErrcmdEsborrar:
      MsgBox "Hi ha hagut un error", MB_OK
    End Sub

Per al botó Nou:

Heu de pensar que això crea de manera provisional un registre a la pantalla. Si no s'escriu res, en moure's a un altre registre no es grava un registre buit.
    Sub cmNou_Click()
      datInternet.Recordset.AddNew
    End Sub

Per als botons Cercar i CercarSegüent:

En la cerca de dades cal especificar un Criteri de cerca d'informació, que és una condició formada per un camp i la informació que voleu trobar en aquest camp. Aquestes dues coses han d'unir-se pels operadors relacionals Like i =.

Els mètodes de cerca d'informació són FindFirst, FindNext, FindPrevious i FindLast.

Per exemple:
    datInternet.RecordSet.FindFirst " [Connexió] = 'http' "

fa que el registre actual sigui el primer registre que és igual a http.
    datInternet.RecordSet.FindNext " [Temes] Like '*UPC*' "

cerca el següent registre que conté la subcadena UPC.

El codi adient per fer aquestes funcions de cerca és el següent:

Declaracions globals al formulari:
    Dim Criteri As String

Procediments de caire general:
    Sub cmdCercar_Click()
      Dim Camp As String
    
      Camp = "["+ cboCamps.List(cboCamps.ListIndex)+"]"
      Criteri = Camp + " Like+ '*" + txtTextACercar + "*'"
      datInternet.Recordset.FindFirst Criteri
    End Sub
    
    Sub cmdCercarSegüent_Click()
      If Criteri <> "" Then
        datInternet.Recordset.FindNext Criteri
      End If
    End Sub


Mètodes associats a l'event Load
    Sub Form_Load()
      cboCamps.AddItem "ID"
      cboCamps.AddItem "Adreça"
      cboCamps.AddItem "Connexió"
      cboCamps.AddItem "Temes"
      cboCamps.AddItem "Telèfon"
      cboCamps.AddItem "Notes"
      cboCamps.AddItem "Interès"
      cboCamps.ListIndex = 0
    End Sub

Aquest procediment emplena els valors de la llista desplegable en la qual s'escull el camp en el qual s'ha de fer la recerca d'un text.


Mètodes associats a l'event Key_Down
    Sub txtTextACercar_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = 13 Then cmdCercar_Click
    End Sub

Aquest procediment és equivalent a prémer el botó Cercar. S'executa en validar el text a cercar un cop s'ha premut la tecla RETORN.

Nota: existeixen més utilitats del control de dades però una que pot tenir especial interès és la de fer Control de Transaccions. Una transacció és una sèrie de canvis que fareu a la base de dades però amb la possibilitat de desfer-los.



Exercicis

Per enviar al professor tutor. (Directori C:\VBCurs\VBExerci\m5\p3 )

E1. A partir de la pràctica que acabeu de realitzar i utilitzant la base de dades COMARQUE.MDB, (Directori: C:\VBCurs\VBHtml\vibam5\m5p3) que conté una taula anomenada Característiques comarques per a presentar dades en un Data Control com en el formulari mostrat a continuació:




Cal fer notar que l'últim quadre de text, "Densitat de població" no es correspon a cap camp concret de la taula de la base de dades. És un camp que l'heu de calcular a partir dels dos camps anteriors (densitat = habitants / extensió) i per actualitzar-lo, ho podeu fer utilitzant, per exemple, l'event change d'algun dels altres camps, per exemple el codi comarca.


Cal enviar els següents fitxers:
    Fitxer projecte m5p3e1.vbp
    Fitxer formulari m5p3e1.frm
    Fitxer executable m5p3e1.exe