+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 3 su 3

Problema variabile integer in una query da codice

  1. #1
    Cluster82 non è in linea Novello
    Salve,
    scusate per la domanda stupida ma ho un problema con la variabile IDa nel codice seguente, se inserisco un numero nella query funziona ma con (tabIscrizioni.IDanno)= " & IDa & " non funziona nonostante Isnumeric(IDa) dia come risultato vero, l'errore penso sia " & IDa & " ma non dovrebbe essere scritto così essendo una variabile integer?
    Dim IDa As Integer
    
    sql = "SELECT tabIscrizioni.IDsocio, tabIscrizioni.IDanno, tabIscrizioni.sezioneanno, tabSezioni.Sezione " & vbCrLf & _
        "FROM tabIscrizioni INNER JOIN tabSezioni ON tabIscrizioni.sezioneanno = tabSezioni.ID " & vbCrLf & _
        "WHERE (tabIscrizioni.IDsocio)=" & [Forms]![form_tabsoci]![ID] & " AND (tabIscrizioni.IDanno)= " & IDa & " " & vbCrLf & _
        "AND ((Len([sezioneanno] & """"))>0)) ORDER BY tabSezioni.Sezione;"
    i = 0
    Set DBCorrente = CurrentDb
    Set Tabanni = DBCorrente.OpenRecordset("tabAnni", dbOpenDynaset)
    Tabanni.MoveLast
    IDa = Tabanni.Fields("ID")
    If DCount("ID", "tabIscrizioni", "[IDsocio]=" & Me.ID) > 0 Then
        Do Until DCount("ID", "tabIscrizioni", "[IDsocio]=" & Me.ID & " and [IDanno]= " & IDa) > 0
            Tabanni.MovePrevious
            IDa = Tabanni.Fields("ID")
        Loop  
        Set Tabella = DBCorrente.OpenRecordset(sql, dbOpenDynaset)
    
        MsgBox Tabella.EOF
        Do Until Tabella.EOF
        MsgBox i
            If i = 0 Then
                sezioni = Tabella.Fields("Sezione")
            Else
                sezioni = sezioni & "; " & Tabella.Fields("Sezione")
            End If
            i = i + 1
            Tabella.MoveNext
        Loop
    
    Else
       sezioni = ""
    End If
    

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Scusa ma se IDA è dichiarato come INTEGER IsNumeric a cosa serve...?
    Quella variabile se non valorizzata vale ZERO che è un numero... e se gli assegni un valore non numerico hai errore... quindi IsNumeric non serve a nulla.

    Ora se il problema è la query SQL fai un DEBUG.PRINT sql prima di aprire il recordset Tabella.
    Vai nella finestra immediata con CTRL+G e leggi bene il predicato come risulta valorizzato.

    Mi chiedo però perché metti una variabile se poi non la usi di fatto perché vale sempre ZERO non penserai che l'assegnazione successiva che fai in quel LOOP vada a modificare il valore precedente.. .? NO ovviamente.
    Se dei aggiornare il predicato SQL devi eseguire la valorizzazione della variabile SQL dopo la modifica di IDA... ma a me quel loop con DCOUNT che attualmente è assolutamente inutile perché non fa proprio nulla, da la sensazione che sia codice sbagliato...

    Perché metti i vbCrLf in un predicato SQL... inutile.

    Insomma in modo un po crudo... quel codice sembra un puzzle di righe senza un senso tecnico, quindi rispondere alla tua domanda direi che è l'ultimo dei problemi.
    ℹ️ Leggi di più su @Alex ...

  3. #3
    In poche parole, il valore di IDa impostato nella variabile sql NON VARIA mai.
    ℹ️ Leggi di più su AntonioG ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Mancato conteggio variabile integer dentro timer
    Da devildragon nel forum Visual Basic .Net
    Risposte: 15
    Ultimo Post: 24-03-2020, 02:05
  2. [access 2010]: Problema con query da codice vba
    Da Elimar nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 10-08-2018, 16:37
  3. Problema con report su query variabile
    Da Jocman nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 14-08-2015, 08:32
  4. Impostrare una stringa di codice tramite variabile
    Da chorro nel forum Microsoft Word
    Risposte: 7
    Ultimo Post: 06-08-2010, 09:15
  5. Codice PHP in una variabile
    Da lorymacri nel forum PHP
    Risposte: 4
    Ultimo Post: 02-01-2009, 14:43