Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    941

    Visual Basic 6.0 Dao e le date errore 3464

    Ciao a tutto
    volevo chiedervi se per caso riuscite a corregermi errore 3464
    che dà il mio programmino nell' esecuzione.
    tecnicamente richiamo un oggetto recordset Dao
    che fà un confronto di una data
    è si blocca proprio nella select di confronto
    tra variabile r e data.
    Sicuramente non è scritto corretamente...
    grazie a tutti


    code
    -------------------------------------------------------------------
    Dim r as Date
    r = Cmbrdr.Text
    Set miodb = OpenDatabase("database.mdb") '---codice per database
    Set miorst = miodb.OpenRecordset("SELECT * from tabella where dataregistrazione = ' r ' ", dbOpenDynaset)

    miorst.MoveLast
    miorst.MoveFirst

    Txtnupr.Text = miorst!numeroprogressivo

    miorst.Close
    miodb.Close

  2. #2
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao
    codice:
    Set miorst = miodb.OpenRecordset("SELECT * from tabella where dataregistrazione = #" & r & "#;", dbOpenDynaset)
    Jupy

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    941
    ora mi da errore 3021 quando la data scelta carica nell' oggetto recordset più valori mentre non mi dà errore quando ne carica solo uno

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    941
    mi da l'errore su miorst!molvelast

  5. #5
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    quell'errore lo da quando il recorset non contiene niente! Quando apri il recorset con la query, prima di usarlo vedi se contiene qualcosa, esempio:
    codice:
    Set miorst = miodb.OpenRecordset("SELECT * from tabella where dataregistrazione = #" & r & "#;", dbOpenDynaset) 
    if miorst.recordcount>0 then
    ....allora ci sono record
    else
    ...non ci sono record
    end if
    Jupy

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    941
    si ok
    ma per arrivare a miorst.recordcount
    devo scrivere
    miorst.movelast
    e quando quella data carica più valori
    si blocca sul movelast
    con errore 3021

  7. #7
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Originariamente inviato da meronet
    si ok
    ma per arrivare a miorst.recordcount
    devo scrivere
    miorst.movelast
    e quando quella data carica più valori
    si blocca sul movelast
    con errore 3021
    :master: e chi l'ha detto che devi fare prima il movelast???
    Ci sono vari metodi per testare se una query ha restituito qualcosa, uno dei quali è la proprietà RecordCount, e si usa come nell'esempio che ti ho postato e non, ripeto, NON è necessario fare il MoveLast!! un'altro metodo per testare se un recordset contiene qualcosa è testare la proprietà Bof/Eof (subito dopo la query e prima di qualsiasi altra operazione!), se sono uguali a vero significa che non ci sono record!
    Forse tu ti confondi sul fatto che, la proprietà recordcount, per far si che non restituisca un valore sbagliato (comunque sia restiutisce sempre un valore maggiore di zero se contiene record), deve essere valutata solo dopo aver riempito il recorset facendo un movelast e un movefirst!
    Jupy

  8. #8
    Devi sfrutare l'evento click della combobox: Il codice è

    Private Sub Combo1_Click()
    Dim miodb As DAO.Database
    Dim miorst As DAO.Recordset
    Dim a As Date
    a = Combo1.Text
    Set miodb = OpenDatabase(App.Path & "\Tuo database"")
    Set miorst = miodb.OpenRecordset("Tabella")
    miorst.MoveFirst
    Do Until miorst.EOF
    If miorst!dataregistrazione = a Then
    Text1 = miorst!numeroprogressivo
    miorst.MoveLast
    End If
    miorst.MoveNext
    Loop
    End Sub
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    941
    ok risolto
    Per fare la ricerca mensile
    devo per forza passare due variabili
    ma se passo a bbb "01 / 1 / 2005" mi dà errore
    mentre devo scrivere
    aaa = "31 / 1 / 2005"
    bbb = "28 / 2 / 2005"

    queste variabili vengono acquisite dalla stringa seguente :

    Set miorst = miodb.OpenRecordset("SELECT * from fatture where dataregistrazione > #" & aaa & "#; and dataregistrazione < #" & bbb & "#; ", dbOpenDynaset)

    il problema è che non prende tutti i valori del 28 febbraio

  10. #10
    Non ti prende tutti i valori fino al 28 febbraio perche non hai scritto bene la espressione SQL.
    Devi scrivere:
    codice:
    "select from fatture where dataregistrazione between #" & Format(aaa, "mm / d / yy") & "# and #" & Format(bbb, "mm/ d / yy") & "#"
    Giorgio
    L'esperienza è il tipo di insegnante più difficile. Prima ti fa l'esame, e poi ti spiega la lezione. (Oscar Wilde)

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.