Usare le date e le variabili in una query sql

di il
7 risposte

Usare le date e le variabili in una query sql

Buona domenica,

Come sempre, lavoro sui miei progetti in Vb6 usando file.mdb come database e, quando non riesco a trovare la soluzione a un problema dopo mezza giornata di ricerche sul web, penso di rivolgermi alla comunità per avere, come ho sempre avuto, delle dritte.

Questa volta, il problema è nell'uso delle variabili e delle date all’interno di una Query. Premetto che è da poco che sto facendo esperienza con SQL, per cui posso essere impreciso nell’esporre il problema.

Quanto alle variabili, ho visto che, in MySql, è possibile assegnare un valore a una variabile con l’istruzione “SET @nomevariabile = valore” e utilizzarla nella clausola WHERE. Purtroppo, il simbolo @ non è riconosciuto in Vb6, perciò vi chiedo cortesemente di dirmi come fare.

Quanto alle date, utilizzando questa istruzione: Set rs = db.OpenRecordset("SELECT * FROM ArcCor WHERE Cod = '0' and (Dat1 is Null or Dat1 = '0')") mi segnala “Errore di run-time ‘3464’ Tipi di dati non corrispondenti nell’espressione criterio”. Vi prego di chiarirmi dov’è l’errore.

Grazie a tutti

7 Risposte

  • Re: Usare le date e le variabili in una query sql

    Ciao ho spostato la discussione nella sezione vb6.

  • Re: Usare le date e le variabili in una query sql

    Tanto per cominciare perché non scrivi nella sezione vb6 (altri linguaggi)?

    A parte questo, a cosa ti serve la variabile?

    E di che tipo è Dat1?

    Inoltre usi ADO o DAO?

    P.S. oops…per la sezione ci ha pensato Toki…

  • Re: Usare le date e le variabili in una query sql

    11/12/2022 - oregon ha scritto:


    Tanto per cominciare perché non scrivi nella sezione vb6 (altri linguaggi)?

    A parte questo, a cosa ti serve la variabile?

    E di che tipo è Dat1?

    Inoltre usi ADO o DAO?

    Ciao, Oregon, il mio primo post l'ho pubblicato nel Bar dei Programmatori, ritenendo che nella sezione si potesse parlare di tutto, e lì ho continuato, Non mancherò in futuro di scrivere nella sezione più appropriata.

    1) variabili: le volevo usare per rendere più leggibili le query, ma soprattutto per fare nuove esperienze, ma non so come dichiararle, come assegnarle i valori e come scriverle nella clausola Where;

    2) Dat1: è del tipo Data/ora;

    3) interfaccia dati: uso DAO.

  • Re: Usare le date e le variabili in una query sql

    A parte il fatto che dovresti usare i parametri (query parametriche), non capisco perché tu abbia difficoltà ad usare semplici variaibili

    “… WHERE CampoNumerico = ” & variabile

    “… WHERE CampoTesto = ‘” & variabile & “’”

    “… WHERE CampoData = #” & variabile & “#”

  • Re: Usare le date e le variabili in una query sql

    13/12/2022 - oregon ha scritto:


    A parte il fatto che dovresti usare i parametri (query parametriche), non capisco perché tu abbia difficoltà ad usare semplici variaibili

    “… WHERE CampoNumerico = ” & variabile

    “… WHERE CampoTesto = ‘” & variabile & “’”

    “… WHERE CampoData = #” & variabile & “#”

    Una query come quella indicata nel mio post:  

    “SELECT * FROM ArcCor WHERE Cod = '0' and (Dat1 is Null or Dat1 = '0')”

    mi riesce difficile da scrivere nella maniera che mi hai indicato. 

    Se in luogo del valore ‘0’ vi fosse una variabile e se ho ben capito, dovrei scrivere qualcosa del genere: 

    "SELECT * FROM ArcCor WHERE Cod = " & var1 & " and (Dat1 is Null or Dat1 = " & var2 & ")"

    e si complicherebbe ancora di più aggiungendo altre variabili. 

    Se, invece, vi fosse la possibilità di indicare le variabili alla maniere di MySql, l'istruzione sarebbe questa, molto più leggibile:

    “SELECT * FROM ArcCor WHERE Cod = @var1 and (Dat1 is Null or Dat1 = @var2)”.

    Se mi dici come fare per dichiarare le variabili e come inserirle nell'istruzione, mi fai cosa grata. 

    Mi fai cosa altrettanto grata se mi spieghi perché l'istruzione "SELECT * FROM ArcCor WHERE Cod = '0' and (Dat1 is Null or Dat1 = '0')") , che appare scritta correttamente, segnala “Errore di run-time ‘3464’ Tipi di dati non corrispondenti nell’espressione criterio”.

    Grazie per l'aiuto che mi darai.

  • Re: Usare le date e le variabili in una query sql

    Ma Cod è un campo numerico o stringa?

    E poi che senso ha confrontare la data con ‘0’ ?

  • Re: Usare le date e le variabili in una query sql

    13/12/2022 - oregon ha scritto:


    Ma Cod eunuchi campo numerico o stringa?

    E poi che senso ha confrontare la data con ‘0’ ?

    1. Cod è una stringa

    2. l'espressione (Dat1 is Null or Dat1 = ‘0’) serve a cercare i record in cui Dat1 (campo di tipo data/ora)  è Null oppure = “00:00:00”

Devi accedere o registrarti per scrivere nel forum
7 risposte