PDA

View Full Version : [VB6]filtrare record


donini
19-10-2006, 22:26
ciao a tutti,premetto che sono alle prime esperienze nella programmazione e che ho già inserito una domanda simile in un altro forum ma non ne sono venuto a capo.
Ma torniamo al mio problema, ho eseguito un progetto che si appoggia in un database access e uso ADO come connesione ,la mia richiesta è la seguente, devo filtrare e recuperare un record già inserito nel database in una textbox, il filtraggio del record deve avvenire dopo aver digitato nome, mese, anno nelle rispettive [combobox] il record da filtrare si chiama (residuo mese precedente ).
qualcuno mi può dare qualche soluzione mostandomi qualche esempio.
grazie infinite

donini
20-10-2006, 22:47
inserisco il codice su cui sto lavorando

Option Explicit
' DICHIARO L'OGGETTO CONNECTION
Dim cn As ADODB.Connection

' DICHIARO L'OGGETTO RECORDSET
Dim rs As ADODB.Recordset
Private ControlliTAB As String



' STRINGA DI ARRAY CHE SERVIRA' IN ALCUNE FASI DEL PROGRAMMA
Dim s() As String


Private Sub cmdEsci_Click()
' ESCE DAL PROGRAMMA
Unload Me
End Sub


Private Sub cmdNuovo_Click()

' PULISCE I CAMPI
NOME.Text = ""
MESE.Text = ""
ANNO.Text = ""
ORE_LAV.Text = 0
ORE_FES.Text = 0
PREZZO_ORA.Text = 0
IMP_SALARIO.Text = 0
IMP_FESTIVITA.Text = 0
MALATT_MATERN.Text = 0
PREZZO_PREMI.Text = 0
PREMI_E_ALTRE_VOCI.Text = 0
RES_MESE_PREC.Text = 0
IMPORTO_LORDO.Text = 0
IRPAF.Text = 0
CONTRIB_IMPS.Text = 0
IMPORTO_NETTO.Text = 0
IMPORTO_BUSTA.Text = 0
IMPORTO_ASSEG.Text = 0
SALDO.Text = 0
IMPORTO_PAGATO.Text = 0
lblMessaggio.Caption = ""
End Sub

Private Sub cmdSeleziona_Click()
' VERIFICO CHE SIA SELEZIONATO UN RECORD REALE (NON VUOTO)
If cmbSeleziona.Text = "" Then
lblMessaggio.Caption = "Selezionare un Utente valido"
Else
lblMessaggio.Caption = ""

' UTILIZZO LA FUNZIONE SPLIT PER RECUPERARE IL VALORE ID NELLA COMBO BOX
s = Split(cmbSeleziona.Text, " ")


Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset


' APRO LA CONNESSIONE E LANCIO LA QUERY PER RECUPERARE IL RECORD SELEZIONATO
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=paghe.mdb"
rs.Open "SELECT * FROM paghe WHERE id = " & CInt(s(0)), cn, 1


' RIEMPIO I CAMPI DELLA FORM CON I VALORI ESTRATTI DAL DATABASE
NOME.Text = rs("nome").Value
MESE.Text = rs("mese").Value
ANNO.Text = rs("anno").Value
ORE_LAV.Text = rs("ore lavorate").Value
ORE_FES.Text = rs("ore festivita").Value
PREZZO_ORA.Text = rs("prezzo ora").Value
IMP_SALARIO.Text = rs("importo salario").Value
IMP_FESTIVITA.Text = rs("importo festivita").Value
MALATT_MATERN.Text = rs("malattia maternita").Value
PREZZO_PREMI.Text = rs("prezzo premi").Value
PREMI_E_ALTRE_VOCI.Text = rs("importo altre voci").Value
RES_MESE_PREC.Text = rs("residuo mese precedente").Value
IMPORTO_LORDO.Text = rs("importo lordo").Value
IRPAF.Text = rs("irpaf").Value
CONTRIB_IMPS.Text = rs("contributi imps").Value
IMPORTO_NETTO.Text = rs("importo netto").Value
IMPORTO_BUSTA.Text = rs("importo busta").Value
IMPORTO_ASSEG.Text = rs("importo assegno").Value
SALDO.Text = rs("saldo").Value
IMPORTO_PAGATO.Text = rs("importo pagato").Value
rs.Close
cn.Close
End If
End Sub

Private Sub cmdCancella_Click()
' CONTROLLO CHE IL RECORD SELEZIONATO NON SIA VUOTO
If cmbSeleziona.Text = "" Then
lblMessaggio.Caption = "Selezionare un Utente valido"
Else
' COME SOPRA...
s = Split(cmbSeleziona.Text, " ")

' ESEGUO LA CANCELLAZIONE DEL RECORD SELEZIONATO
Set cn = New ADODB.Connection
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=paghe.mdb"
cn.Execute ("DELETE * FROM paghe WHERE id = " & CInt(s(0)))
cn.Close

' PULISCO E RICARICO LA COMBO BOX
cmbSeleziona.Clear
Call Form_Load
End If
End Sub

Private Sub cmdSalva_Click()
' CONTROLLO LA VALIDITA' DEI CAMPI

If Len(Trim(ORE_LAV.Text)) = 0 Or IsNumeric(ORE_LAV.Text) = False Then
lblMessaggio.Caption = "Inserire ore lavorate"
ORE_LAV.SetFocus
ElseIf Len(Trim(ORE_FES.Text)) = 0 Or IsNumeric(ORE_FES.Text) = False Then
lblMessaggio.Caption = "Inserire ore festivita"
ORE_FES.SetFocus
ElseIf Len(Trim(PREZZO_ORA.Text)) = 0 Or IsNumeric(PREZZO_ORA.Text) = False Then
lblMessaggio.Caption = "Inserire prezzo "
PREZZO_ORA.SetFocus
ElseIf Len(Trim(IMP_SALARIO.Text)) = 0 Or IsNumeric(IMP_SALARIO.Text) = False Then
lblMessaggio.Caption = "Inserire il importo salario "
IMP_SALARIO.SetFocus
Else ' SE TUTTE LE CONDIZIONI SONO STATE SODDISFATTE...

' COMANDO SQL A SECONDA CHE SI TRATTI DI UNA INSERT O DI UN UPDATE
Dim SQL As String
' MESSAGGIO DI CONFERMA (SECONDO LO STESSO CRITERIO DESCRITTO SOPRA)
Dim conferma As String

' COME SOPRA...
s = Split(cmbSeleziona.Text, " ")

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=paghe.mdb"

If cmbSeleziona.Text = "" Then ' ...ESEGUO LA INSERT
SQL = "INSERT INTO paghe " _
& "(nome, mese, anno, [ore lavorate], [ore festivita], [prezzo ora], [importo salario], [importo festivita], [malattia maternita],[prezzo premi]," _
& "[importo altre voci], [residuo mese precedente], [importo lordo], [irpaf], [contributi imps], [importo netto], [importo busta], [importo assegno], [saldo]," _
& "[importo pagato])VALUES " _
& "('" & Replace(NOME.Text, "'", "''") & "', " _
& "'" & Replace(MESE.Text, "'", "''") & "', " _
& "'" & Replace(ANNO.Text, "'", "''") & "', " _
& "'" & Replace(ORE_LAV.Text, "'", "''") & "', " _
& "'" & Replace(ORE_FES.Text, "'", "''") & "', " _
& "'" & Replace(PREZZO_ORA.Text, "'", "''") & "', " _
& "'" & Replace(IMP_SALARIO.Text, "'", "''") & "'," _
& "'" & Replace(IMP_FESTIVITA.Text, "'", "''") & "'," _
& "'" & Replace(MALATT_MATERN.Text, "'", "''") & "'," _
& "'" & Replace(PREZZO_PREMI.Text, "'", "''") & "'," _
& "'" & Replace(PREMI_E_ALTRE_VOCI.Text, "'", "''") & "'," _
& "'" & Replace(RES_MESE_PREC.Text, "'", "''") & "'," _
& "'" & Replace(IMPORTO_LORDO.Text, "'", "''") & "'," _
& "'" & Replace(IRPAF.Text, "'", "''") & "'," _
& "'" & Replace(CONTRIB_IMPS.Text, "'", "''") & "'," _
& "'" & Replace(IMPORTO_NETTO.Text, "'", "''") & "'," _
& "'" & Replace(IMPORTO_BUSTA.Text, "'", "''") & "'," _
& "'" & Replace(IMPORTO_ASSEG.Text, "'", "''") & "'," _
& "'" & Replace(SALDO.Text, "'", "''") & "'," _
& "'" & Replace(IMPORTO_PAGATO.Text, "'", "''") & "')"
conferma = "Inserimento effettuato con successo"
Else ' ...ESEGUO L'UPDATE
SQL = "UPDATE paghe SET " _
& "[nome] = '" & Replace(NOME.Text, "'", "''") & "', " _
& "[mese] = '" & Replace(MESE.Text, "'", "''") & "', " _
& "[anno] = '" & Replace(ANNO.Text, "'", "''") & "', " _
& "[ore lavorate] = '" & Replace(ORE_LAV.Text, "'", "''") & "', " _
& "[ore festivita] = '" & Replace(ORE_FES.Text, "'", "''") & "', " _
& "[prezzo ora] = '" & Replace(PREZZO_ORA.Text, "'", "''") & "', " _
& "[importo salario] = '" & Replace(IMP_SALARIO.Text, "'", "''") & "' " _
& "[importo festivita] = '" & Replace(IMP_FESTIVITA.Text, "'", "''") & "' " _
& "[malattia maternita] = '" & Replace(MALATT_MATERN.Text, "'", "''") & "' " _
& "[prezzo premi] = '" & Replace(PREZZO_PREMI.Text, "'", "''") & "' " _
& "[importo altre voci] = '" & Replace(PREMI_E_ALTRE_VOCI.Text, "'", "''") & "' " _
& "[residuo mese predente] = '" & Replace(RES_MESE_PREC.Text, "'", "''") & "' " _
& "[importo lordo] = '" & Replace(IMPORTO_LORDO.Text, "'", "''") & "' " _
& "[irpaf] = '" & Replace(IRPAF.Text, "'", "''") & "' " _
& "[contributi imps] = '" & Replace(CONTRIB_IMPS.Text, "'", "''") & "' " _
& "[importo netto] = '" & Replace(IMPORTO_NETTO.Text, "'", "''") & "' " _
& "[importo busta] = '" & Replace(IMPORTO_BUSTA.Text, "'", "''") & "' " _
& "[importo assegno] = '" & Replace(IMPORTO_ASSEG.Text, "'", "''") & "' " _
& "[saldo] = '" & Replace(SALDO.Text, "'", "''") & "' " _
& "[importo pagato] = '" & Replace(IMPORTO_PAGATO.Text, "'", "''") & "' " _
& "WHERE id = " & CInt(s(0))
conferma = "Modifica effettuata con successo"
End If

' ESEGUO IL COMANDO SQL CHE ARRIVA DELLA CONDIZIONE
cn.Execute (SQL)
lblMessaggio.Caption = conferma

cn.Close

' PULISCO E RICARICO LA COMBO BOX
cmbSeleziona.Clear
Call Form_Load
End If
End Sub
Private Sub Form_Load()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
ControlliTAB = "NOME MESE ANNO ORE_LAV ORE_FES PREZZO_ORA IMP_SALARIO IMP_FESTIVITA MALATT_MATERN PREZZO_PREMI PREMI_E_ALTRE_VOCI" _
& "RES_MESE_PREC IMPORTO_LORDO"


' APRO LA CONNESSIONE E LANCIO LA QUERY PER RECUPERARE I DATI

cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=paghe.mdb"
rs.Open "SELECT DISTINCT nome FROM paghe ORDER BY nome ASC", cn, 1
NOME.AddItem ("")
While rs.EOF = False
NOME.AddItem ("" & rs("nome").Value)
rs.MoveNext
Wend
rs.Close
rs.Open "SELECT DISTINCT mese FROM paghe ORDER BY mese ASC", cn, 1
MESE.AddItem ("")
While rs.EOF = False
MESE.AddItem ("" & rs("mese").Value)
rs.MoveNext
Wend
rs.Close
rs.Open "SELECT DISTINCT anno FROM paghe ORDER BY anno ASC", cn, 1
ANNO.AddItem ("")
While rs.EOF = False
ANNO.AddItem ("" & rs("anno").Value)
rs.MoveNext
Wend
rs.Close
rs.Open "SELECT id, nome, mese, anno FROM paghe ORDER BY anno ASC", cn, 1
cmbSeleziona.AddItem ("")
While rs.EOF = False
cmbSeleziona.AddItem (rs("id").Value & " - " & rs("nome").Value & " " & rs("mese").Value & " - " & rs("anno").Value)
rs.MoveNext
Wend
rs.Close





cn.Close
End Sub