Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente bannato L'avatar di Stimbao
    Registrato dal
    Jul 2010
    Messaggi
    22

    [Access] Controllo SQL data e ora in vba

    io ho questa stringa SQL: "SELECT SalaRiunione.IDSala, SalaRiunione.IDPersonale, SalaRiunione.IDCommessa, SalaRiunione.Data, SalaRiunione.Inizio, SalaRiunione.Fine, SalaRiunione.[Note/Descrizione] FROM SalaRiunione WHERE (((SalaRiunione.Data)=[Forms]![SalaRiunione]![txtData]) AND ((SalaRiunione.Fine)>[Forms]![SalaRiunione]![txtInizio])) OR (((SalaRiunione.Data)=[Forms]![SalaRiunione]![txtData]) AND ((SalaRiunione.Inizio)<[Forms]![SalaRiunione]![txtFine]))"

    non conosco molto bene vba ma per caso posso inserire questo sql in codice e dire che se viene fuori un record di mandarmi un msgbox di errore


    Grazie anticapatamente...
    Saluti Stimbao

  2. #2
    codice:
    dim rst As DAO.Recordset
    dim sql as string
    
    'apre recorset
    sql = "SELECT SalaRiunione.IDSala, SalaRiunione.IDPersonale, SalaRiunione.IDCommessa, SalaRiunione.Data, SalaRiunione.Inizio, SalaRiunione.Fine, SalaRiunione.[Note/Descrizione] FROM SalaRiunione WHERE (((SalaRiunione.Data)=#" & format([Forms]![SalaRiunione]![txtData],"dd/mm/yyyy") & "#) AND ((SalaRiunione.Fine)>" & [Forms]![SalaRiunione]![txtInizio] & ")) OR (((SalaRiunione.Data)=#" & format([Forms]![SalaRiunione]![txtData]"dd/mm/yyyy") & "#) AND ((SalaRiunione.Inizio)<" & [Forms]![SalaRiunione]![txtFine] & "))"
    Set rst = CurrentDb.OpenRecordset(sql)
         
        
        If Not rst.BOF Then 'verivica se il recordset non è vuoto
        msgbox "errore"
        end if
                  
            'chiudi e azzera il recordset
            rst.Close: Set rst = Nothing
    prova così, la parte in rosso potrebbe dare problemi, access legge sempre la data come fosse anglosassone, io la riporto al formato italiano ma poi dipende da come tu hai impostato quel campo.
    Il numero di pecorelle scannate dai pastori è di gran lunga superiore al numero di pecorelle mangiate dai lupi. Per cui, se qualcuno si proponesse di essere il vostro pastore per salvarvi dai lupi, pensateci bene.

  3. #3
    Utente bannato L'avatar di Stimbao
    Registrato dal
    Jul 2010
    Messaggi
    22
    nel campo la ho inserita giorno mese anno...

    purtroppo quando faccio compila mi da questo errore:

    Errore di compilazione:
    Errore di sintassi

    e mi segnala la riga sql = "select eccetera" in rosso...

  4. #4
    l'errore ti segnala un problema nell'istruzione sql. io sinceramente non riesco a vederlo. la stringa sql che hai postato all'inizio funziona correttamente come query?
    Il numero di pecorelle scannate dai pastori è di gran lunga superiore al numero di pecorelle mangiate dai lupi. Per cui, se qualcuno si proponesse di essere il vostro pastore per salvarvi dai lupi, pensateci bene.

  5. #5
    Utente bannato L'avatar di Stimbao
    Registrato dal
    Jul 2010
    Messaggi
    22
    Funziona la query.

    La query la ho creata con creazione guidato (o come caspita si chiama) dopodiche sono passato al linguaggio SQL e mi sono coppiato la stringa.

  6. #6
    Utente bannato L'avatar di Stimbao
    Registrato dal
    Jul 2010
    Messaggi
    22
    Ho trovato che c'è un comando DoCmd.OpenQuery "ControlloOre"

    ControlloOre è la mia query...

    si puo usare direttamente quello? come faccio a dirgli che se trova uno record deve darmki un msgbox...

    ps. scusate il doppio post.

  7. #7
    trovato.
    codice:
    sql = "SELECT SalaRiunione.IDSala, SalaRiunione.IDPersonale, SalaRiunione.IDCommessa, SalaRiunione.Data, SalaRiunione.Inizio, SalaRiunione.Fine, SalaRiunione.[Note/Descrizione] FROM SalaRiunione WHERE (((SalaRiunione.Data)=#" & format([Forms]![SalaRiunione]![txtData],"dd/mm/yyyy") & "#) AND ((SalaRiunione.Fine)>" & [Forms]![SalaRiunione]![txtInizio] & ")) OR (((SalaRiunione.Data)=#" & format([Forms]![SalaRiunione]![txtData],"dd/mm/yyyy") & "#) AND ((SalaRiunione.Inizio)<" & [Forms]![SalaRiunione]![txtFine] & "))"
    la correzione all'errore l'ho evidenziata in rosso (era una virgola).

    iniziamo a vedere se cosi funziona.

    come ti dicevo nei post precedenti la formatazione dd/mm/yyyy potrebbe non funzionarti, fai delle prove ed in caso cambiala con mm/dd/yyyy (qui sono io che non mi ricordo mai cosa vuole access).
    Il numero di pecorelle scannate dai pastori è di gran lunga superiore al numero di pecorelle mangiate dai lupi. Per cui, se qualcuno si proponesse di essere il vostro pastore per salvarvi dai lupi, pensateci bene.

  8. #8
    Utente bannato L'avatar di Stimbao
    Registrato dal
    Jul 2010
    Messaggi
    22
    Errore di sintassi nel numero nell'espressione della query '(((SalaRiunione.Data)=#02/07/2010#)and((SalaRiunione.Fine)>10.00.00))or(((SalaR iunione.Data)=#02/07/2010#)and((SalaRiunione.Inizio)<12.00.00))'.

    selezionando la riga con f9 e proseguendo con f8 ho scoperto che va in errore nella riga Set rst = CurrentDb.OpenRecordset(sql).

    Passando con il cursore, sempre durante l'esecuzione della routine, su sql mi visualizza correttamente la stringa.

  9. #9
    ho un vuoto di memoria, non mi ricordo se i capi ora vogliono il # o '. fai le prove con entrambi.
    esempio:
    #" & [Forms]![SalaRiunione]![txtInizio] & "#
    oppure
    '" & [Forms]![SalaRiunione]![txtInizio] & "'

    logicamente devi modificare anche txtfine
    Il numero di pecorelle scannate dai pastori è di gran lunga superiore al numero di pecorelle mangiate dai lupi. Per cui, se qualcuno si proponesse di essere il vostro pastore per salvarvi dai lupi, pensateci bene.

  10. #10
    Utente bannato L'avatar di Stimbao
    Registrato dal
    Jul 2010
    Messaggi
    22
    mi dispiace romperti con questo di venerdi mattina

    ma mi lo stesso errore di prima solo che al posto del # mi da '

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 © 2024 vBulletin Solutions, Inc. All rights reserved.