PROJECTE TECNOHOUSE
Fem una base de
dades en la qual intentarem emmagatzemar la informació necessària per gestionar
una inmobiliària.
A partir de les
condicions establertes per l’exercici proposat
Pel exercici que
farem servir 7 taules amb els camps corresponents.
Les relacions
s’estableixen entre els ítems corresponents
El programa haurà
de partir d’un formulari MDIFORM que contindrà un menú per treballar amb
cadascuna de les 7 taules que hem elaborat.
Si ens fixem en
la construcció de les taules i les seves relacions podem extreure les relacions
de dependències entre taules i quin és el camp que cal que existeixi per poder
afegir algun registre nou en una taula relacionada
Els primers
formularis que farem seran els que no depenen d’altres taules, en aquest cas
farem primer el formulari Titular i Propietaris.
Es poden fer
ràpidament introduint un datagrid i uns quadres de
text (tants com camps tingui la taula), afegim un adodc
connectat a la base de dades i connectem cadascun dels textbox
al adodc amb la propietat recordsource
i al camp camp
corresponent amb la propietat datafield.
Hem afegit un
menú amb dues opcions al formulari per modificar e introduir nous titulars.
UTILITZACIÓ D’UN CONTROL ADODC (OLEDB - ADO DATA
CONTROL) I CONTROL DE LES OPCIONS D’UNA TAULA INDEPENDENT
Connexió a la
base de dades, escollim el motor: Microsoft jet 4.0 provider i la ruta.
Una vegada
connectat el adodc establim el recordsource
i el connectem a la taula corresponent:
Per cadascun dels
quadres de text hem de connectar les propietats Datasource
i DataField de manera que obtenim el següent.
I on cadascun
d’ells el connectarem al camp corresponent.
Per fer el menú
haurem de polsar en “Herramientas – Editor de Menús”
Haurem
d’implementar les funcions “Nuevo Titular” i “Modificar Titular”
En “Nuevo Titular” hem d’afegir un nou registre al nostre
conjunt de dades de l’adodc, així posarem:
Private Sub mnuNuevTit()
Adodc1.Recordset.AddNew
Sidatos
End sub
Recordo que per
evitar que es puguin modificar les dades, directament des del quadre de text
hem de fer una funció Sidatos y Nodatos
que ens deixi o no modificar les dades sempre que estiguem segurs de que les
volem modificar, i no en qualsevol altre cas. Hem de pensar que les dades són
molt important i si es perden o es modifiquen sense voler poden generar unes
pèrdues econòmiques molt importants
Les funcions
poden tenir el següent aspecte:
Private Sub NODATOS()
Text1.Enabled = False
Text2.Enabled = False
Text3.Enabled = False
Text4.Enabled = False
Text5.Enabled = False
Text6.Enabled = False
Text7.Enabled = False
Text8.Enabled = False
Text9.Enabled = False
Command1.Visible = False
Command2.Visible = False
Command7.Visible = False
End Sub
Private Sub SIDATOS()
Text1.Enabled = True
Text2.Enabled = True
Text3.Enabled = True
Text4.Enabled = True
Text5.Enabled = True
Text6.Enabled = True
Text7.Enabled = True
Text8.Enabled = True
Text9.Enabled = True
Command1.Visible = True
Command2.Visible = True
Command7.Visible =True
End Sub
En aquestes
funcions habilitem i deshabilitem els controls per
poder modificar el contingut dels camps o no i visualitzem el botons, acceptar
i cancel·lar i esborrar el registre.
El contingut dels
botons acceptar i cancel·lar serà:
‘BOTÓ ACCEPTAR
Private Sub Command1_Click()
On Error Resume
Next ‘controlem el possible error degut a la base de
dades
NODATOS ‘ deshabilitem
els controls per seguir modificant
Adodc1.Recordset.Update
‘actualitzem el recordset amb les noves dades.
End Sub
‘BOTÓ CANCELAR
Private Sub Command2_Click()
On Error Resume
Next
NODATOS
Adodc1.Recordset.CancelUpdate
‘cancel·lem l’actualització i queda el recorset com
estava
End Sub
Si afegim a la
nostra aplicació 4 botons de navegació pels registres de la base de dades, llavors
tenim següent formulari i el codi dels botons:
‘BOTÓ PER ANAR AL PRIMER REGISTRE
Private Sub Command3_Click()
Adodc1.Recordset.MoveFirst
End Sub
‘BOTÓ PER ANAR AL REGISTRE
ANTERIOR
Private Sub Command4_Click()
Adodc1.Recordset.MovePrevious
If Adodc1.Recordset.BOF Then
Adodc1.Recordset.MoveFirst
End Sub
‘BOTÓ PER ANAR AL REGISTRE
SEGÜENT
Private Sub Command5_Click()
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF Then
Adodc1.Recordset.MoveLast
End Sub
‘REGISTRE PER ANAR A L’ÚLTIM
REGISTRE
Private Sub Command6_Click()
Adodc1.Recordset.MoveLast
End Sub
Hem d’implementar
la possibilitat d’esborrar un registre
L’opció
d’esborrar el registre la introduïm dintre de l’opció modificar registre i
dintre de la funció sidatos nodatos
per ocultar o visualitzar el botó. A més controlarem l’execució de l’acció amb
un missatge de windows. Si la resposta és positiva,
llavors esborrem el registre amb la instrucció delete
i reestructrem la base de dades amb el requery.
Private Sub Command7_Click()
If MsgBox("¿Seguro que quieres borrar el registro?", vbOKCancel,
"Atencion Borrar
Registro") = vbOK Then
Adodc1.Recordset.Delete
Adodc1.Recordset.Requery
End If
End sub
UTILITZACIÓ D’UN CONTROL ADODC (OLEDB - ADO DATA
CONTROL) I CONTROL DE LES OPCIONS D’UNA TAULA DEPENDENT
Com es pot
pensar, les taules dependents, depenen en sí d’alguna dada d’una altra taula,
en el nostre cas, les taules independents són les taules titulars de les
agències i la taula propietaris dels immobles, per tant podríem fer el segon
formulari exactament igual a l’anterior.
Com exemple de
taula dependent podem fer la taula agència que depèn de la taula titulars, amb
una relació un a un. De manera que cada
agència tindrà un titular que l’identificarem per l’id_titular.
El formulari serà
exactament igual que el de les taules titulars i propietaris, amb un textbox per cada camp que volem visualitzar, però el que
farem serà introduir un DataComboBox (cuadre de text combinat amb un listbox
(OLEDB)) per enllaçar amb les opcions dels titulars possibles, i dos adodcs, un connectat a agències i l’altra connectat a
titulars.
Afegim dos Adodcs i un DataCombo:
Els adodcs els connectem a la base de dades i a cadascuna de
les taules així en la propietat recordsource dels adodcs introduïm la consulta corresponent.
Després el DataCombo el connectem als adodcs,
però de la següent manera. La part desplegable, es per la propietat rowSource= Adodc2, i la propietat listField=ID_TIT
així obtindrem en el desplegable els Identificadors de tots els possibles
Titulars i del mateix Data combo, el valor dataSource=
Adodc1 i la propietat DataField=ID_TIT L’identificador del titular de l’agència.
Tota la resta
d’opcions serien anàlogues a les del programa anterior.
Hem afegit un
botó que obriria el formulari de titulars
si volguèssim afegir un titular que no hi fos.
Per a que el datacombo actualitzi el valor del registre en el momento en que canviem la selecció, hem d’afegir en la
funció click el valor del datacombo
en el recordset:
Private Sub DataCombo1_Click(Area As Integer)
Adodc1.Recordset.Fields(1) =
DataCombo1.Text
End Sub