' Els comentaris sobre la programació del formulari CONSULTAR es troben al propi formulari
' **********************************************************************************************
' A continuació es resumeix tot allò necessari per a programar el formulari BASE. Per més detalls,
' veures els arxius anteriors penjats al campus.
' **** BASE DE DADES AMB ACCESS ****
' Abans de fer el projecte en VB cal fer una taula en Access (procediment explicat a classe)
' La taula tindrà quatre camps:
' - nom (texte)
' - cognoms (texte)
' - dni (texte)
' - nota (numero)
' IMPORTANT: Al guardar l'arxiu en Access s'ha de fer com a versió Office 97
' per a que sigui compatible amb el compilador de VB (si no, donarà una errada d'incompatibilitat
' de versions a l'executar el VB).
' **** AFEGINT UN CONTROL TIPUS DATA ****
' Al Form1 de l'aplicació s'afegirà un control tipus DATA.
' S'ha d'actuar sobre les següents propietats del DATA:
' - CONNECT --> sel.leccionar ACCESS (estableix el tipus d'arxiu a linkar)
' - DATABASENAME --> Establir la ruta on es troba la base de dades
' - RECORDSOURCE --> Es carrega la taula de la base de dades
' **** LINKAR TEXTBOX AMB ELS CAMPS DE LA TAULA DE LA BASE DE DADES ****
' Sobre el FORM1 es peguen quatre TEXTBOX (un per cada camp de la taula de la base de dades)
' i quatre LABELS (posant com a nom el del cada camp de la taula).
' A cada TEXTBOX s'actua sobre les següents propietats:
' - DATASOURCE --> es tria la taula de la base de dades
' - DATAFIELD --> es tria el camp de la taula que es vol visualitzar
' **** AFEGIR COMMONBUTTONS ****
' Crear 9 COMMONBUTTONS al FORM1. Es recomana donar al NOMBRE i CAPTION el mateix nom.
' - ALTA - BAJA - MODIFICAR
' - ACEPTAR - CANCELAR - SALIR
' - BUSCAR - FILTRO - CONSULTA
' Inicialment, al clickar els botons BUSCAR, FILTRO i CONSULTA s'ha de fer el següent:
' que s'obri un nou formulari (Form1.hide, formN.show) amb un altre COMMONBUTTON que
' permeti tornar al FORM1 (Form1.show, FormN.hide).
' Més endavant es programaran aquestes opcions amb les funcions concretes.
' **** IMPORTANT!!! ****
' Comenci a mirar-se aquest codi a la rutina d'inici FORM_LOAD
' **** Sobre les funcions ACEPTAR i CANCELAR *****
' Les comandes UPDATE/CANCELUPDATE sempre han de ser l'execució següent a ADDNEW o bé EDIT.
' Fixi's en com està n programades les funcions i confirmi que es compleix aquest a regla.
' Faci proves no posant consecutivament aquestes comandes i miri el que passa.
Private Sub Form_Load()
txtNombre.Locked = True ' es bloquegen les TEXTBOX per evitar qualsevol modificació del contingut
txtApellido.Locked = True ' faci la prova canviant el TRUE pel FALSE i executi l'aplicació.
txtDni.Locked = True ' durant l'execució reescrigui a la TEXTBOX i miri el que passa.
txtNota.Locked = True
'inicialment no cal que tots els botons estiguin activats. Només necesitem els principals
cmdAlta.Enabled = True
cmdBaja.Enabled = True
cmdModificar.Enabled = True
cmdAceptar.Enabled = False 'aquests només s'han d'activar quan hagim sel.lecionat una funció
cmdCancelar.Enabled = False
cmdBuscar.Enabled = True
cmdFiltro.Enabled = True
cmdConsulta.Enabled = True
cmdSalir.Enabled = True
End Sub
End Sub
Private Sub cmdAceptar_Click()
's'actualitza la info a la base de dades segons la funció cridada just anteriorment.
If txtNombre.Text = "" Or txtApellido.Text = "" Or txtDni.Text = "" Or txtNombre.Text = "" Or Val(txtNota.Text) > 10 Or Val(txtNota.Text) < 0 Then
dataTabla.Recordset.CancelUpdate
MsgBox "faltan datos o son incorrectos"
Else
dataTabla.Recordset.Update
End If
dataTabla.Refresh
'es torna a bloquejar els TEXTBOX
txtNombre.Locked = True
txtApellido.Locked = True
txtDni.Locked = True
txtNota.Locked = True
'es deixen activades/desactivades les opcions d'inici
cmdAlta.Enabled = True
cmdBaja.Enabled = True
cmdModificar.Enabled = True
cmdAceptar.Enabled = False
cmdCancelar.Enabled = False
cmdBuscar.Enabled = True
cmdFiltro.Enabled = True
cmdConsulta.Enabled = True
cmdSalir.Enabled = True
End Sub
Private Sub cmdAlta_Click()
'cal desbloquejar les TEXTBOX per a permetre afegir una nova entrada a la taula
txtNombre.Locked = False
txtApellido.Locked = False
txtDni.Locked = False
txtNota.Locked = False
'només hem de permetre a l'usuari que acepti o cancel.li
cmdAlta.Enabled = False
cmdBaja.Enabled = False
cmdModificar.Enabled = False
cmdAceptar.Enabled = True
cmdCancelar.Enabled = True
cmdBuscar.Enabled = False
cmdFiltro.Enabled = False
cmdConsulta.Enabled = False
cmdSalir.Enabled = False
'aquesta comanda permet que la info escrita als TEXBOX siguin considerada com
'a una NOVA ENTRADA a la base de dades. Però encara no s'ha guardat. Això es farÃ
'quan s'hagi clickat ACEPTAR.
dataTabla.Recordset.AddNew
End Sub
Private Sub cmdBaja_Click()
Dim resp As Integer 'amb aquesta variable es recollirà la reposta
Dim POS As Integer ' aqui es recullirà la posició del registre que es vol eliminar
If dataTabla.Recordset.RecordCount > 0 Then 'si tenim registres a la taula
resp = MsgBox("eliminar seguro(s/n)", vbInformation + vbYesNo, "ELIMINANDO") 'es demana confirmació i es recull a resp
If resp = 6 Then 'si ha respost que si (6)
POS = dataTabla.Recordset.AbsolutePosition 'agafem la posició del registre a esborrar
dataTabla.Recordset.Delete 's'esborra el registre
If dataTabla.Recordset.RecordCount > POS Then 'si el registre no era l'últim de la taula
dataTabla.Recordset.MoveNext 'es mostra el següent
Else 'si era l'ultim de la taula, és a dir, Data1.Recordset.RecordCount = POS
dataTabla.Recordset.MoveFirst 'també valdria data1.refresh
End If
Else 'si la resposta a la confirmación d'eliminació va ser que no (7)
MsgBox ("baja cancelada")
End If
Else
MsgBox ("la base de datos está vacÃa!!!") 'si la bbdd està buida
End If
End Sub
Private Sub cmdBuscar_Click()
frmBase.Hide
frmBuscar.Show
End Sub
Private Sub cmdCancelar_Click()
's'ignora el que s'hagi fet a la funció cridada just anteriorment
dataTabla.Recordset.CancelUpdate
'es torna a bloquejar els TEXTBOX
txtNombre.Locked = True
txtApellido.Locked = True
txtDni.Locked = True
txtNota.Locked = True
'es deixen activades/desactivades les opcions d'inici
cmdAlta.Enabled = True
cmdBaja.Enabled = True
cmdModificar.Enabled = True
cmdAceptar.Enabled = False
cmdCancelar.Enabled = False
cmdBuscar.Enabled = True
cmdFiltro.Enabled = True
cmdConsulta.Enabled = True
cmdSalir.Enabled = True
End Sub
Private Sub cmdConsulta_Click()
frmBase.Hide
frmConsultar.Show
End Sub
Private Sub cmdFiltro_Click()
frmBase.Hide
frmFiltrar.Show
End Sub
Private Sub cmdModificar_Click()
'cal desbloquejar les TEXTBOX per a permetre afegir una nova entrada a la taula
txtNombre.Locked = False
txtApellido.Locked = False
txtDni.Locked = False
txtNota.Locked = False
'només hem de permetre a l'usuari que acepti o cancel.li
cmdAlta.Enabled = False
cmdBaja.Enabled = False
cmdModificar.Enabled = False
cmdAceptar.Enabled = True
cmdCancelar.Enabled = True
cmdBuscar.Enabled = False
cmdFiltro.Enabled = False
cmdConsulta.Enabled = False
cmdSalir.Enabled = False
'aquesta comanda permet que la info escrita als TEXBOX siguin considerada com
'a una NOVA ENTRADA a la base de dades. Però encara no s'ha guardat. Això es farÃ
'quan s'hagi clickat ACEPTAR.
dataTabla.Recordset.Edit
End Sub
Private Sub cmdSalir_Click()
Beep
End
End Sub
Private Sub Form_Activate()
dataTabla.Refresh
End Sub
Colorized by: CarlosAg.CodeColorizer
'********************
'* FORMULARI BUSCAR *
'********************
'Aquest formulari ha de permetre trobar a la BBDD allò escrit a la TEXTBOX segons el camp que s'hagi sel.leccionat
'per l'usuari al COMBO.
'A més, ha de permetre trobar el primer, últim, següent i anterior registre que compleix amb la petició de búsqueda.
'******** DISSENY *******
' - 4 caixes de text (linkades amb cada camp de la BBDD linkada al Data)
' - 4 labels (una per cada camp de la BBDD)
' - 1 caixa de text per escriure el text/valor a buscar a la BBDD
' - 1 Data linkat amb la BBDD
' - 1 combo per posar el llistat de criteris de búsqueda (els camps de la BBDD).
' - 1 botó per a VOLVER
' - 4 botons per PRIMERO/ULTIMO/SIGUIENTE/ANTERIOR
Private Sub cmdAnterior_Click()
If txtTexto.Text <> "" Then ' es mira si la caixa de text és buida
If comboBuscar.Text <> "----------------- [CAMPO] --------------------" Then ' es mira si no s'ha sel.leccionat res al combo
If comboBuscar.Text = "NOTA" Then ' es mira si s'ha triat un camp tipus ENTER o bé tipus STRING
dataBuscar.Recordset.FindPrevious "[NOTA] = " & txtTexto.Text
Else
dataBuscar.Recordset.FindPrevious "[" & comboBuscar.Text & "] = '" & txtTexto.Text & "'"
End If
If dataBuscar.Recordset.NoMatch = True Then
dataBuscar.Refresh 'si no es troba res, es torna al principi de la BBDD
MsgBox " NO ENCONTRADO"
End If
Else
MsgBox "SELECCIONA CATEGORÃA"
End If
Else
MsgBox "ESCRIBA VALOR O TEXTO A BUSCAR Y SELECCIONE CATEGORÃA"
End If
End Sub
Private Sub cmdBase_Click()
frmBase.Show
frmBuscar.Hide
frmBase.dataTabla.Refresh 'es refresca la BBDD per a que comenci desde el principi quan passem al formulari BASE
End Sub
Private Sub cmdPrimero_Click()
If txtTexto.Text <> "" Then ' es mira si la caixa de text és buida
If comboBuscar.Text <> "----------------- [CAMPO] --------------------" Then ' es mira si no s'ha sel.leccionat res al combo
If comboBuscar.Text = "NOTA" Then ' es mira si s'ha triat un camp tipus ENTER o bé tipus STRING
dataBuscar.Recordset.FindFirst "[NOTA] = " & txtTexto.Text
Else
dataBuscar.Recordset.FindFirst "[" & comboBuscar.Text & "] = '" & txtTexto.Text & "'"
End If
If dataBuscar.Recordset.NoMatch = True Then
dataBuscar.Refresh 'si no es troba res, es torna al principi de la BBDD
MsgBox " NO ENCONTRADO"
End If
Else
MsgBox "SELECCIONA CATEGORÃA"
End If
Else
MsgBox "ESCRIBA VALOR O TEXTO A BUSCAR Y SELECCIONE CATEGORÃA"
End If
End Sub
Private Sub comboCampo_KeyPress(KeyAscii As Integer)
KeyAscii = 0 'es bloqueja per a que no es pugui escriure al Combo
End Sub
Private Sub cmdSiguiente_Click()
If txtTexto.Text <> "" Then ' es mira si la caixa de text és buida
If comboBuscar.Text <> "----------------- [CAMPO] --------------------" Then ' es mira si no s'ha sel.leccionat res al combo
If comboBuscar.Text = "NOTA" Then ' es mira si s'ha triat un camp tipus ENTER o bé tipus STRING
dataBuscar.Recordset.FindNext "[NOTA] = " & txtTexto.Text
Else
dataBuscar.Recordset.FindNext "[" & comboBuscar.Text & "] = '" & txtTexto.Text & "'"
End If
If dataBuscar.Recordset.NoMatch = True Then
dataBuscar.Refresh 'si no es troba res, es torna al principi de la BBDD
MsgBox " NO ENCONTRADO"
End If
Else
MsgBox "SELECCIONA CATEGORÃA"
End If
Else
MsgBox "ESCRIBA VALOR O TEXTO A BUSCAR Y SELECCIONE CATEGORÃA"
End If
End Sub
Private Sub cmdUltimo_Click()
If txtTexto.Text <> "" Then ' es mira si la caixa de text és buida
If comboBuscar.Text <> "----------------- [CAMPO] --------------------" Then ' es mira si no s'ha sel.leccionat res al combo
If comboBuscar.Text = "NOTA" Then ' es mira si s'ha triat un camp tipus ENTER o bé tipus STRING
dataBuscar.Recordset.FindLast "[NOTA] = " & txtTexto.Text
Else
dataBuscar.Recordset.FindLast "[" & comboBuscar.Text & "] = '" & txtTexto.Text & "'"
End If
If dataBuscar.Recordset.NoMatch = True Then
dataBuscar.Refresh 'si no es troba res, es torna al principi de la BBDD
MsgBox " NO ENCONTRADO"
End If
Else
MsgBox "SELECCIONA CATEGORÃA"
End If
Else
MsgBox "ESCRIBA VALOR O TEXTO A BUSCAR Y SELECCIONE CATEGORÃA"
End If
End Sub
Private Sub txtApellido_KeyPress(KeyAscii As Integer)
KeyAscii = 0 'es bloqueja per a que no es pugui escriure a la Caixa de Text
End Sub
Private Sub txtDni_KeyPress(KeyAscii As Integer)
KeyAscii = 0 'es bloqueja per a que no es pugui escriure a la Caixa de Text
End Sub
Private Sub txtNombre_KeyPress(KeyAscii As Integer)
KeyAscii = 0 'es bloqueja per a que no es pugui escriure a la Caixa de Text
End Sub
Private Sub txtNota_KeyPress(KeyAscii As Integer)
KeyAscii = 0 'es bloqueja per a que no es pugui escriure a la Caixa de Text
End Sub
Colorized by: CarlosAg.CodeColorizer
'***********************
'* FORMULARI CONSULTAR *
'***********************
'AQUEST FORMULARI S'ENCARREGA DE CONSULTAR A LA BBDD SEGONS EL CAMP DEL COMBO TRIAT
'AQUELLS REGISTRES DE LA BBDD QUE COMENCEN PER LA LLETRA O VALOR SEL.LECCIONAT
'************************
'* OPCIONS DE CONSULTA *
'************************
' LLETRA --> A fins a la Z
' VALOR --> del 0 al 9
' COMODà --> el carà cter *
'***********
'* DISSENY *
'***********
'
' - Afegir un Data Control (dataConsultar) i linkar-lo amb la BBDD (ajusteu les propietats CONNECT, DATABASENAME, RECORDSOURCE)
' - Afegir un Data Bound Grid (dbgConsultar) --> a la propietat DATASOURCE establir el dataFiltar
' - Afegir 37 botons per a les opcions de consulta: 10 valors (0 al 9) + 26 lletres (A a Z) + 1 comodà (*)
' --> IMPORTANT --> feu copy-paste dels botons i acepteu fer una matriu de botons
' - Afegir un combo per als camps de CONSULTA, linkat amb la BBDD (ajusteu les propietats DATASOURCE, LIST i TEXT)
' - Afegir una caixa de text per a rebre el valor/paraula a filtrar per l'usuari
'***************
'* PROGRAMACIÓ *
'***************
' al fer servir una matriu de botons, per adreçar-nos a ella fem servir l'index.
' cada component de la matriu té un valor de l'index propi. Això permet que una única funció sigui comuna
' passant l'index com a parà metre.
' la instrucció bà sica és la següent:
' Data1.RecordSource = "SELECT * FROM [nom_de_la_BBDD_definida a l'Acces] where [camp_BBDD] LIKE '" & Botonera(Index).Caption & "*'"
'
' no s'han inclós els recursos habituals de control d'errors. És feina de l'alumne programar-los
' de forma semblant a com s'ha fet a formularis anteriors
Private Sub cmdBotonera_Click(Index As Integer)
dataConsultar.RecordSource = "SELECT * FROM [BBDD] where [" & Combo1.Text & "] LIKE '" & cmdBotonera(Index).Caption & "*'"
dataConsultar.Refresh
End Sub
Private Sub cmdVolver_Click()
frmBase.Show
frmConsultar.Hide
End Sub
Private Sub Form_Activate()
dataConsultar.Refresh 'en el moment de convertir-se en el formulari actiu, es refresca el data linkat a la BBDD
End Sub
Private Sub dataConsultar_Reposition() 'permet fer dinà mic el caption del data segons els resultats que compleixen el filtratge
dataConsultar.Caption = dataConsultar.Recordset.AbsolutePosition + 1 & " de " & dataConsultar.Recordset.RecordCount
End Sub
Colorized by: CarlosAg.CodeColorizer
'*********************
'* FORMULARI FILTRAR *
'*********************
'AQUEST FORMULARI S'ENCARREGA DE FILTRAR A LA BBDD SEGONS EL CAMP DEL COMBO TRIAT, L'OPCIÓ DE FILTRATGE TRIADA I
'EL VALOR O CADENA ESCRITS A LA CAIXA DE TEXT. EL DATABOUND HA DE MOSTRAR TOTS ELS REGISTRES DE LA BBDD QUE
'COMPLEIXEN AMB AQUESTS CRITERIS
'************************
'* OPCIONS DE FILTRATGE *
'************************
' MAYOR
' MAYOR QUE
' MENOR
' MENOR QUE
' IGUAL
'***********
'* DISSENY *
'***********
' - Carregar el control Data Bound Grid:
' Proyecto --> Componentes --> Microsoft Data Bound Grid Control 5.0 (SP3)
' --> Microsoft Data Bound List Controls 6.0
' - Afegir un Data Control (dataFiltrar) i linkar-lo amb la BBDD (ajusteu les propietats CONNECT, DATABASENAME, RECORDSOURCE)
' - Afegir un Data Bound Grid (dbgFiltrar) --> a la propietat DATASOURCE establir el dataFiltar
' - Afegir cinc botons per a les opcions de filtratge
' - Afegir un combo per als camps de filtratge, linkat amb la BBDD (ajusteu les propietats DATASOURCE, LIST i TEXT)
' - Afegir una caixa de text per a rebre el valor/paraula a filtrar per l'usuari
'***************
'* PROGRAMACIÓ *
'***************
'totes les opcions de filtratge es programen igual. S'ha de fer servir la comanda SELECT. S'interpreta aixÃ.
'data.RecordSource = "SELECT * FROM [nom_de_la_BBDD_definida a l'Acces] where [camp_BBDD] > " & txtTexto.Text
'sel.lecciona tot allò de la BBDD on el camp triat compleixi la condició segons el valor escrit a la caixa de text
Private Sub cmdIgual_Click()
If txtTexto.Text <> "" Then
If Combo1.Text <> "[LISTA]" Then
If Combo1.Text = "Nota" Then
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [NOTA] = " & txtTexto.Text
dataFiltrar.Refresh
Else
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [" & Combo1.Text & "] = '" & txtTexto.Text & "'"
dataFiltrar.Refresh
End If
If dataFiltrar.Recordset.NoMatch = True Then
MsgBox " NO ENCONTRADO"
End If
Else
MsgBox "SELECCIONA CATEGORÃA"
End If
Else
MsgBox "ESCRIBA VALOR O TEXTO A CONSULTAR Y SELECCIONE CATEGORÃA"
End If
End Sub
Private Sub cmdMayor_Click()
If txtTexto.Text <> "" Then
If Combo1.Text <> "[LISTA]" Then
If Combo1.Text = "Nota" Then
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [NOTA] > " & txtTexto.Text
dataFiltrar.Refresh
Else
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [" & Combo1.Text & "] > '" & txtTexto.Text & "'"
dataFiltrar.Refresh
End If
If dataFiltrar.Recordset.NoMatch = True Then
MsgBox " NO ENCONTRADO"
End If
Else
MsgBox "SELECCIONA CATEGORÃA"
End If
Else
MsgBox "ESCRIBA VALOR O TEXTO A CONSULTAR Y SELECCIONE CATEGORÃA"
End If
End Sub
Private Sub cmdMayorIgual_Click()
If txtTexto.Text <> "" Then
If Combo1.Text <> "[LISTA]" Then
If Combo1.Text = "Nota" Then
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [NOTA] >= " & txtTexto.Text
dataFiltrar.Refresh
Else
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [" & Combo1.Text & "] >= '" & txtTexto.Text & "'"
dataFiltrar.Refresh
End If
If dataFiltrar.Recordset.NoMatch = True Then
MsgBox " NO ENCONTRADO"
End If
Else
MsgBox "SELECCIONA CATEGORÃA"
End If
Else
MsgBox "ESCRIBA VALOR O TEXTO A CONSULTAR Y SELECCIONE CATEGORÃA"
End If
End Sub
Private Sub cmdMenor_Click()
If txtTexto.Text <> "" Then
If Combo1.Text <> "[LISTA]" Then
If Combo1.Text = "Nota" Then
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [NOTA] < " & txtTexto.Text
dataFiltrar.Refresh
Else
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [" & Combo1.Text & "] < '" & txtTexto.Text & "'"
dataFiltrar.Refresh
End If
If dataFiltrar.Recordset.NoMatch = True Then
MsgBox " NO ENCONTRADO"
End If
Else
MsgBox "SELECCIONA CATEGORÃA"
End If
Else
MsgBox "ESCRIBA VALOR O TEXTO A CONSULTAR Y SELECCIONE CATEGORÃA"
End If
End Sub
Private Sub cmdMenorIgual_Click()
If txtTexto.Text <> "" Then
If Combo1.Text <> "[LISTA]" Then
If Combo1.Text = "Nota" Then
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [NOTA] <= " & txtTexto.Text
dataFiltrar.Refresh
Else
dataFiltrar.RecordSource = "SELECT * FROM [BBDD] where [" & Combo1.Text & "] <= '" & txtTexto.Text & "'"
dataFiltrar.Refresh
End If
If dataFiltrar.Recordset.NoMatch = True Then
MsgBox " NO ENCONTRADO"
End If
Else
MsgBox "SELECCIONA CATEGORÃA"
End If
Else
MsgBox "ESCRIBA VALOR O TEXTO A CONSULTAR Y SELECCIONE CATEGORÃA"
End If
End Sub
Private Sub cmdVolver_Click()
frmBase.Show
frmBuscar.Hide
frmConsultar.Hide
frmFiltrar.Hide
End Sub
Private Sub dataFiltrar_Reposition() 'permet fer dinà mic el caption del data segons els resultats que compleixen el filtratge
dataFiltrar.Caption = dataFiltrar.Recordset.AbsolutePosition + 1 & " de " & dataFiltrar.Recordset.RecordCount
End Sub
Private Sub Form_Activate()
dataFiltrar.Refresh 'en el moment de convertir-se en el formulari actiu, es refresca el data linkat a la BBDD
End Sub
Colorized by: CarlosAg.CodeColorizer
No hay comentarios:
Publicar un comentario