Condividi:        

ACCESS: maschere per query

Hai problemi con i file Zip, vuoi formattare l'HD, non sai come funziona FireFox? O magari ti serve proprio quel programmino di cui non ricordi il nome! Ecco il forum dove poter risolvere i tuoi problemi.

Moderatori: Dylan666, hydra, gahan

Postdi Dylan666 » 17/09/04 20:26

archimede ha scritto:dovresti poter aggiungere e togliere campi a tuo piacimento senza toccare il codice. Le uniche limitazioni sono:

1) Il nome del controllo sulla maschera dev'essere uguale al nome del corrispondente campo sulla tabella
2) Il controllo dev'essere una casella di testo (quindi niente radio buttons, menu a tendina, ecc. -- altrimenti bisogna mettere mano al codice)


Oltre a queste raccomandazioni e alle parti nel tuo codice che ho segnato in rosso, quali righe vanno modificate per rendere il tuo pulsante utilizzabile in qualsiasi database?

Private Sub Comando41_Click()
On Error GoTo Err_Comando41_Click

Dim stDocName As String, strSQL As String, myWhere As String
Dim ctl As Control, fieldType As Long

strSQL = "select * from libri" suppongo sia il nome della tabella, come più sotto myWhere = ""
For Each ctl In Me.Controls
If (ctl.ControlType = 109) Then
fieldType = CurrentDb().TableDefs("libri").Fields(ctl.Name).Properties("Type")
If (fieldType = 10 Or fieldType = 12) Then ' Testo
If (Nz(ctl.Value) > " ") Then
If (myWhere = "") Then
myWhere = " where [" & ctl.Name & "] like '*" & ctl.Value & "*'"
Else
myWhere = myWhere & " AND [" & ctl.Name & "] like '*" & ctl.Value & "*'"
End If
End If
ElseIf (fieldType = 8) Then ' Data
If (Nz(ctl.Value) > " ") Then
If (myWhere = "") Then
myWhere = " where [" & ctl.Name & "]=#" & ctl.Value & "#"
Else
myWhere = myWhere & " AND [" & ctl.Name & "]=#" & ctl.Value & "#"
End If
End If
ElseIf (fieldType = 4 Or fieldType = 3) Then ' Numerico
If (Nz(ctl.Value) > 0) Then
If (myWhere = "") Then
myWhere = " where [" & ctl.Name & "]=" & ctl.Value
Else
myWhere = myWhere & " AND [" & ctl.Name & "]=" & ctl.Value
End If
End If
End If
End If
Next ctl
strSQL = strSQL & myWhere
stDocName = "Libri" questo invece è il nome del report?
DoCmd.OpenReport stDocName, acPreview, strSQL

Exit_Comando41_Click:
Exit Sub

Err_Comando41_Click:
MsgBox Err.Description
Resume Exit_Comando41_Click

End Sub
Avatar utente
Dylan666
Moderatore
 
Post: 40118
Iscritto il: 18/11/03 16:46

Sponsor
 

Postdi archimede » 20/09/04 08:03

Dylan666 ha scritto:Oltre a queste raccomandazioni e alle parti nel tuo codice che ho segnato in rosso, quali righe vanno modificate per rendere il tuo pulsante utilizzabile in qualsiasi database?
Nessuna, mi pare (e sì, le tue supposizioni sono corrette).

Per rendere le cose ancora più flessibili si potrebbe pensare ad una funzione (richiamabile da qualsiasi maschera del db) alla quale passi il nome della tabella ed il nome del report.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi Dylan666 » 20/09/04 12:30

La domanda non era banale nel senso... come mai qui allora non mi funziona? :P
Avatar utente
Dylan666
Moderatore
 
Post: 40118
Iscritto il: 18/11/03 16:46

Postdi archimede » 20/09/04 12:56

La maschera di ricerca dev'essere unbound: svuota l'origine dati sia della maschera sia dei singoli controlli in essa contenuti.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2851
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi Dylan666 » 20/09/04 14:09

Che pirla, hai ragione... :oops:
Avatar utente
Dylan666
Moderatore
 
Post: 40118
Iscritto il: 18/11/03 16:46

Precedente

Torna a Software Windows


Topic correlati a "ACCESS: maschere per query":


Chi c’è in linea

Visitano il forum: Nessuno e 60 ospiti