Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    137

    [VB] filtrare record

    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 ).
    io ho provato a fare una query inserita in commandbutton ma mi da (errore run time 3709 connessione chiusa o non valida per questo contesto)
    questo è il codice
    codice:
    Private Sub Command2_Click()
    
    
    
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    
    cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=paghe.mdb"
    rs.Open "SELECT DISTINCT [residuo mese precedente] FROM paghe WHERE (nome='" & NOME.Text & " AND mese = " & MESE.Text & " AND anno= " & ANNO.Text & ");"
    RES_MESE_PREC.Text = rs("residuo mese precedente").Value
    MsgBox NOME
    rs.Close
    cn.Close
    End Sub

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi indicare al recordset a quale connessione si riferisce ...

    rs.Open "SELECT DISTINCT [residuo mese precedente] FROM paghe WHERE (nome='" & NOME.Text & " AND mese = " & MESE.Text & " AND anno= " & ANNO.Text & ");", cn

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    137
    mi da ancora errore però diverso ora è errore run time 2147217900(80040e14)

  4. #4
    Da come la vedo io è un errore di sintassi (se inizi a racchiudere una stringa tra apici, devi anche finire......)
    codice:
    rs.Open "SELECT DISTINCT [residuo mese precedente] FROM paghe WHERE (nome='" & NOME.Text & "' AND mese = '" & MESE.Text & "' AND anno= '" & ANNO.Text & "');", cn
    Se avessi consultato Google riportando il codice dell'errore ti sarebbe balzato all'occhio

    Ciauz

    Chico

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da donini
    mi da ancora errore però diverso ora è errore run time 2147217900(80040e14)
    Ovviamente ... devi distinguere tra i tanti errori che dara' il tuo codice ...

    Il primo problema era il fatto che non indicavi la connessione a cui doveva fare riferimento il recordset (errore originale per cui hai aperto il thread ...)

    Il secondo errore e' adesso determinato dalla sintassi con cui hai scritto quella query (e chico ti ha fornito le correzioni ...)

    Ma questo non significa che adesso non ci siano altri errori, ma dovresti *chiudere* una discussione se il problema originale si e' risolto ed *aprirne* un'altra specifica per il nuovo errore ...

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da oregon
    ma dovresti *chiudere* una discussione se il problema originale si e' risolto ed *aprirne* un'altra specifica per il nuovo errore ...
    ...e possibilmente specificare anche la versione di VB a cui si fa riferimento, e una descrizione sintetica del problema, come da Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    137
    sembra che l aito che mi avete dato è ottimo, se posso approfittare della vostra gentilezza avrei un altro quesito e sarebbe questo al codice su cui mi avete aiutato dovre fare una modifica e precisamente nella descrizione del mese ,cioè se io indico MESE MAGGIO il programma mi deve cercare il record nel mese precedente cioè APRILE è possibile
    codice:
    Private Sub Command2_Click()
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=paghe.mdb"
    rs.Open "SELECT DISTINCT [residuo mese successivo] FROM paghe WHERE (nome='" & NOME.Text & "' AND mese = '" & MESE.Text & "' AND anno= '" & ANNO.Text & "');", cn
    RES_MESE_PREC.Text = rs("residuo mese successivo").Value
    
    rs.Close
    cn.Close
    End Sub

  8. #8
    Caspita, Donini, se continui a leggere solo quello che ti fa comodo non riceverai grandi aiuti..forse per questo sei costretto a domandare su piu' forum ?
    Oregon ti aveva suggerito di aprire un thread diverso per ogni problema.... [cut]

    Veniamo al problema:
    Se il valore contenuto nella TextBox Mese.text è il numero del mese, la risolvi semplicemente con:
    codice:
    AND mese = '" & cint(MESE.Text)-1 ecc. ecc.
    (attenzione al mese di Gennaio.....)

    Diversamente, se usi il NOME del mese (quindi oltre che nella stringa SQL anche nel DB VVoVe: ) puoi ovviare cosi':
    codice:
    Dim Mesi As String, MesiSplit, MesiNr As Integer, MesiText As String
    Mesi = "gennaio  |febbraio |marzo    |aprile   |maggio   |giugno   |luglio   |agosto   |settembre|ottobre  |novembre |dicembre"
    MesiSplit = Split(Mesi, "|")
    MesiNr = (Int(InStr(1, Mesi, LCase(Mese.Text)) / 10)) + 1
    If MesiNr = 1 Then MesiNr = 12 Else MesiNr = MesiNr - 1
    MesiText = UCase(MesiSplit(MesiNr - 1))
    MsgBox (MesiText)
    quindi la tua stringa SQL diventa :
    codice:
    AND mese = '" & MesiText ecc. ecc.

    Chico

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Donini, certe volte penso che tu non capisca quello che ti si risponde, a volte penso che tu *non voglia* capire ...

    Ma e' proprio cosi' *difficile* per te seguire delle regole ...?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.