Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138

    [vb express 2008] Problema con clausola WHERE associata al mese e l'anno di una data

    eseguo un query che mi deve confrontare il mese e l'anno della data corrente con quelli dentro una tabella access.. il risultato deve apparire in una listbox. il tutto riesce solo quando nella clausola WHERE della query metto come condizione solo MONTH o YEAR mentre se le inserisco insieme non mi riporta nessun risultato... dove sbaglio ?
    codice:
     Dim data As Date = Today
            Dim anno As String
            anno = Format(data, "MM/yyyy")
    archivio.Open()
    
            Dim ricerca1 As New OleDb.OleDbCommand("SELECT Codice_barra,Descrizione FROM Articoli_anagrafica WHERE YEAR (Data_scadenza)AND MONTH(Data_scadenza)  = @valore2", archivio)
            ricerca1.Parameters.Add("@valore2", OleDbType.Char).Value = anno
    
            Dim leggi1 As OleDb.OleDbDataReader = ricerca1.ExecuteReader
            MsgBox(leggi1.Read)
    
    
    
            While leggi1.Read()
                ListBox2.Items.Add(leggi1("Codice_barra"))
            End While
    
            archivio.Close()

  2. #2
    la routine non funziona perché è scritta male

    la query deve essere ... WHERE YEAR(Data_Scadenza)=@Anno AND MONTH(Data_Scadenza)=@Mese

    ti sarai ovviamente ricavato per bene sia @Anno che @Mese

    (forse si può semplificare, se ti serve sempre il mese corrente, dicci con quale db stai lavorando)

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    quindi il mese e l'anno della data corrente li devo ricavare in due variabili separate ?

  4. #4
    direi di sì. ma con quale db stai lavorando?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    sto lavorando con access.. comunque non funziona neanche facendo così :
    codice:
    'così ricavo anno e mese dalla data
    Dim data As Date = Today
            Dim anno As String
            anno = Format(data, "yyyy")
            Dim mese As String
            mese = Format(data, "MM")
     
    'e così faccio la query
    Dim ricerca1 As New OleDb.OleDbCommand("SELECT Codice_barra,Descrizione FROM Articoli_anagrafica WHERE MONTH (Data_scadenza)  = @valore1 AND YEAR (Data_scadenza)= @valore2", archivio)
            ricerca1.Parameters.Add("@valore1", OleDbType.Char).Value = mese
            ricerca1.Parameters.Add("@valore2", OleDbType.Char).Value = anno

  6. #6
    SELECT
    Codice_barra,Descrizione
    FROM
    Articoli_anagrafica
    WHERE
    MONTH (Data_scadenza) = MONTH(Date())
    AND YEAR (Data_scadenza) = YEAR(DATE())


    ovvio, DATA_Scadenza deve essere in formato DataOra

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    grazie adesso funziona! comunque siccome voglio capire il meccanismo della programmazione e faccio di tutto per imparare nuove cose mi sapresti dire come fa la query a capire di prendere i parametri se non ci sono i segna posto ?? e qual è la differenza con il metodo che usavo io ? perchè se la clausola era soltanto una funzionava..

  8. #8
    la mia semplicemente NON usa parametri, è il db che prende direttamente la data odierna ( Date() ) dal sistema. Il meccanismo varia a seconda del db usato (ad esempio,, per M$SQL la data odierna è restituita dalla funzione GetDate() )

    That easy!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2013
    Messaggi
    138
    ho capito ! visto che al momento sei online mi potresti fare il favore di rispondere al mio prolema di questo post ? http://forum.html.it/forum/showthrea...readid=1551449 per favore

  10. #10
    Originariamente inviato da frank095
    ho capito ! visto che al momento sei online mi potresti fare il favore di rispondere al mio prolema di questo post ? http://forum.html.it/forum/showthrea...readid=1551449 per favore
    ti avrei già risposto se avessi capito qualcosa di quel problema. comunque, continua di là

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.