Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    [vb6+sql] stringa query

    salve a tutti. Mi sono incasinato con una stringa per effettuare la ricerca in un database.
    Ho due combobox in cui c'è il mese (gennaio, febbraio, marzo...) e l'anno.
    Per salvare l'anno e il mese ho fatto così:
    codice:
    anno = cboAnno.Text
       mesenum = cboMese.Text
        Select Case mesenum
    Case "Gennaio"
        mm = "1"
    Case "Febbraio"
        mm = "2"
    Case "Marzo"
        mm = "3"
    Case "Aprile"
        mm = "4"
    Case "Maggio"
        mm = "5"
    Case "Giugno"
        mm = "6"
    Case "Luglio"
        mm = "7"
    Case "Agosto"
        mm = "8"
    Case "Settembre"
        mm = "9"
    Case "Ottobre"
        mm = "10"
    Case "Novembre"
        mm = "11"
    Case "Dicembre"
        mm = "12"
    End Select
    adesso dovrei effettuare la ricerca dal 01/mese/anno al 31/mese/anno in una tabella in cui c'è il campo Data_fattura proprio in formato gg/mm/aaaa.

    Ho provato a scrivere questa stringa sql ma temo di essermi incasinato con apici (') e virgolette (").
    codice:
     Rs.Open "SELECT * FROM Fattura WHERE Data 
    BETWEEN 01'" /& mm & "'/ & anno   And 31 '" & mm & "'/ & anno & "
    qualcuno saprebbe darmi una mano per riscrivere correttamente la stringa??

    grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: [vb6+sql] stringa query

    Intanto, secondo me, nella prima parte la Select Case non serve ... Dovresti semplicemente scrivere

    codice:
    anno = cboAnno.Text
    mm = cboMese.ListIndex + 1
    e per la query, se operi con Access (non l'hai detto ...), devi scrivere

    codice:
    Rs.Open "SELECT * FROM Fattura WHERE Data 
    BETWEEN #" & mm & "/01/" & anno & "# AND #" & mm & "/31/" & anno & "#"

  3. #3
    Innanzitutto grazie per la celerità della risposta.
    Poi effettivamente ho mancato di dire che opero con il database access.
    Adesso provo la query e ti faccio sapere.

  4. #4
    la query funziona, anche se c'era da modificare l'ordine. In quella che mi hai postato hai inserito mm/gg/aaaa, mentre l'ho corretta così:

    codice:
    Rs.Open "SELECT * FROM Fattura WHERE Data BETWEEN 
    #" & "01/" & mm & "/" & anno & "# AND #" & "31/" & mm & "/" & anno & "#"

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No .. non devi modificare l'ordine ...

    Access accetta solamente questo formato (mm/gg/aaaa) nelle query ...

    Ovviamente, per i mesi in cui il 31 non esiste, la query ti dara' un errore ... ti suggerisco di trovare l'ultimo giorno del mese e inserirlo al posto del 31 ...

  6. #6
    infatti ora stavo proprio per chiederti questa cosa relativa all'ultimo giorno del mese.
    Se facessi una sorta di case:
    se il mese è febbraio il massimo giorno è 28
    se il mese è giugno il massimo giorno è 30
    se il mese è gennaio, luglio, dicembre ecc il massimo giorno è 31....

    Comunque, mantenendo la mia stringa (cioè nel formato gg/mm/aaaa), le fatture di gennaio (che ha 31 giorni) mi vengono visualizzate correttamente.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Il giorno finale del mese lo ottieni cosi'

    gg = Day(DateSerial(anno, mm + 1, 0))

    Per quanto riguarda il formato, utilizza mm/gg/aaaa ... fidati.

    Non hai avuto problemi perche' il primo gennaio (1/1) e il trentuno gennaio (31/1) non possono essere equivocati e il motore del db ne tiene conto. Ma nel caso di date ambigue (pensa al 10 dicembre o al 5 giugno ...) il db deve decidere qual e' il giorno e quale il mese; se scrivi all'italiana 10/12, il sistema che opera con il formato americano decidera' che hai indicato 12 ottobre; nell'altro caso, tu intenderai 5/6 e il sistema lo comprenderà come 6 maggio ...

  8. #8
    ho seguito i tuoi consigli. Devo dire che funziona tutto correttamente e ti ringrazio per la disponibilità. Alla fine il codice che ho utilizzato è stato il seguente:

    codice:
    anno = cboAnno.Text
    mm = cboMese.ListIndex + 1
    gg = Day(DateSerial(anno, mm + 1, 0))
    
    Rs.Open "SELECT * FROM Fattura WHERE Data
    BETWEEN #" & mm & "/01/" & anno & "# AND #" & mm & "/" & gg & "/" & anno & "#"

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Okay ... sei sulla buona strada ...

  10. #10
    Originariamente inviato da oregon
    Okay ... sei sulla buona strada ...
    io ho studiato il vb6 al 4° anno dell'itis informatico (mi sono diplomato quest'anno) ma quella per cui ho chiesto aiuto è la prima vera applicazione di interfacciamento tra database di access e visual basic. Poi non si finisce mai di imparare. Penso che anche chi ci lavori da 10 anni sul vb possa trovarsi davanti ad un problema che non è in grado di risolvere, non tanto a livello algoritmico, quanto a livello di codifica. Non credi??

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.