Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [ACCESS-VBA] Controllo valori di un recordset

    Ciao a tutti
    Ho una maschera basata su una tabella. In questa tabella ogni volta che vado ad inserire il CodiceFornitore (che nel mio caso non è una chiave), vorrei fare un controllo se è presente o meno nella tabella un record con lo stesso valore.

    Ho fatto la seguente
    codice:
    Private Sub CodiceFornitore_AfterUpdate()
    
    'Questa procedura stabilisce una connessione
    'con il database corrente con le 2 righe sotto riportate
    
    Dim conn As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    
    'assegno ad una variabile il valore della maschera corrispondente
    'al campo CodiceFornitore
    
    CaratteriDigitati = Me.CodiceFornitore
    
    'Crea l'oggetto di connessione
    Set conn = CurrentProject.Connection
    
    'Crea un nuovo Recordset
    Set rst = New ADODB.Recordset
    
    ' Apre la tabella o la query
    rst.Open "SELECT COUNT(CodiceFornitore) FROM FORNITORE WHERE CodiceFornitore ='CaratteriDigitati'", conn
    
    flag = rst.Fields("CodiceFornitore")
    'appoggio = flag
    
    If flag > 1 Then
    MsgBox "Codice già presente"
    
    End If
    
    End Sub
    mi restituisce il seguente errore: errore di run-time 3265. impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numro richiesto.
    qualche suggerimento?

  2. #2
    Prova così

    Private Sub CodiceFornitore_AfterUpdate()

    'Questa procedura stabilisce una connessione
    'con il database corrente con le 2 righe sotto riportate

    Dim conn As ADODB.Connection
    Dim rst As ADODB.Recordset


    'assegno ad una variabile il valore della maschera corrispondente
    'al campo CodiceFornitore

    CaratteriDigitati = Me.CodiceFornitore

    'Crea l'oggetto di connessione
    Set conn = CurrentProject.Connection

    'Crea un nuovo Recordset
    Set rst = New ADODB.Recordset

    ' Apre la tabella o la query
    rst.Open "SELECT COUNT(CodiceFornitore) FROM FORNITORE WHERE CodiceFornitore ='" & CaratteriDigitati & "'", conn

    flag = rst.Fields("CodiceFornitore")
    'appoggio = flag

    If flag > 1 Then
    MsgBox "Codice già presente"

    End If

    End Sub
    The Fresh...remaker
    A volte la risposta è sotto ai nostri occhi, bisogna solo aver voglia di cercarla!!
    http://www.angelsinthedark.it

  3. #3
    evidentemente la query non ha prodotto alcun risultato. Prima di provare ad accedere ad un recordset devi verificare che questo non sia vuoto tramite il metodo .EOF

    xxx

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma se non includi il campo CodiceFornitore nella query, come fai a leggerlo dal recordset?

    E poi, a cosa ti serve sommare i codici dei fornitori ?

  5. #5
    cosi funge.
    mi serve fare un select count per contare quanti record con lo stesso CodiceFornitore ci sono.
    Poichè la selectcount mi parte da zero con un CodiceFornitore inserito, appena tento di inserirne un altro con lo stesso CodiceFornitore questa mi restituisce il valore 1 e quindi mando il messaggio di errore.


    codice:
    Private Sub CodiceFornitore_AfterUpdate()
    
    'Questa procedura stabilisce una connessione
    'con il database corrente con le 2 righe sotto riportate
    
    Dim conn As ADODB.Connection
    Dim rst As ADODB.Recordset
    'Dim fld As ADODB.Field
    
    'Crea l'oggetto di connessione
    Set conn = CurrentProject.Connection
    
    'Crea un nuovo Recordset
     Set rst = New ADODB.Recordset
    
    sql = "SELECT COUNT(*) AS Conta FROM FORNITORE WHERE CodiceFornitore='" & Me.CodiceFornitore.Text & "' "
    ' Apre la tabella o la query
    rst.Open sql, conn
    'Me.appoggio = rst("Conta")
    
    If rst("Conta") >= 1 Then
    
    
    
    MsgBox "Il Codice Fornitore è già presente"
    Me.CodiceFornitore.SetFocus
    Me.CodiceFornitore = ""
    
    End If
    rst.Close: Set rst = Nothing
    
    conn.Close: Set conn = Nothing
    End Sub

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Pardon ... avevo letto SUM e non COUNT ...

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.