Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 10 su 10

Stringa di ricerca SQL con operatore BETWEEN

  1. #1
    roccolamann non  in linea Scribacchino
    Post
    519
    Like Inviati  
    0
    Like Ricevuti  
    0
    Devo selezionare dei record da un database Access servendomi dell'operatore BETWEEN:
    la ricerca deve essere effettuata tra due date che nella stringa non vengono scritte secondo il formato DATE ma bens facendo riferimento al contenuto di due controlli di una barra.
    Per essere pi chiaro espongo di seguito la routine completa:
    Sub DATINAZIONIELENCAFraDueDate()
     On Error Resume Next
      Dim conn As Object
      Dim rs As Object
      Dim DataInizio as date
      Dim DataFine as date
        DataInizio=Activedocument.Commandbars("DATI").controls(3).text   'DataInizio  contenuta in un controllo di una barra
        DataFine=Activedocument.Commandbars("DATI").controls(4).text     'DataFine  contenuta in un controllo di una barra
            Set conn = CreateObject("ADODB.Connection")
        conn.Provider = "Microsoft.Jet.OLEDB.4.0"
        conn.Open "C:\Database.mdb"
          Set rs = CreateObject("ADODB.recordset")        
            rs.Open "SELECT * From Nazioni where Data Between DataInizio and DataFine ORDER BY Nazione", conn, 1, 1 'Stringa
             For Each x In rs.Fields
               Do Until rs.EOF                            'Ciclo tra tutti i record
                  MsgBox (rs("Nazione").Value)
                rs.MoveNext
              Loop
           Next
        conn.Close
      Set rs = Nothing
      Set conn = Nothing
    End Sub
    
    Grazie in anticipo per i suggerimenti.

  2. #2
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,503
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    Perch in "Altri DBMS" ? Quale DBMS ?

    E poi, hai spiegato cosa devi fare e il codice, ma non spieghi il problema.
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    roccolamann non  in linea Scribacchino
    Post
    519
    Like Inviati  
    0
    Like Ricevuti  
    0
    DBMS=SQL
    Semplicemente la routine va in loop e non mi d i dati richiesti.
    Comunque la domanda finale : come posso impostare una query SQL con l'operatore Between dove le due date (inizio,fine) siano espresse con il riferimento ad una textbox, inputbox, etc.?

  4. #4
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,503
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    Quote Originariamente inviato da roccolamann Visualizza il messaggio
    DBMS=SQL
    Non mi pare, dato che scrivi

    conn.Provider = "Microsoft.Jet.OLEDB.4.0"
    conn.Open "C:\Database.mdb"

    Semplicemente la routine va in loop e non mi d i dati richiesti.
    E quando l'hai detto?

    A che ti serve il ciclo

    For Each x In rs.Fields

    ??

    Non mi pare abbia senso

    Comunque la domanda finale : come posso impostare una query SQL con l'operatore Between dove le due date (inizio,fine) siano espresse con il riferimento ad una textbox, inputbox, etc.?
    Inserisci i dati dal controllo in due variabile e concatenale alla stringa SQL, nel formato corretto, alla stringa SQL. Ma potresti usare, meglio, i parametri.

    Ti ricordo che la concatenazione di variabili a stringhe un concetto di base che dovresti conoscere dopo tantissimi post (pi di 400 !) e tanta esperienza sul linguaggio. Si concatena con

    "......" & variabile & "....."

    e non si scrive tutto tra virgolette

    In ogni caso, stiamo parlando di VB6+Access?
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    roccolamann non  in linea Scribacchino
    Post
    519
    Like Inviati  
    0
    Like Ricevuti  
    0
    Stiamo parlando di una stringa VBA di Word che io uso per aggiungere dati di un database ACCESS ad un documento Word.
    nella routine originaria al posto di
    MsgBox (rs("Nazione").Value)
    
    dovrei inserire:
    Selection.typetext (rs("Nazione").Value)
    
    per inserire i dati nel documento Word; ma non questo il problema.
    Per connettermi al database devo per forza usare la connessione con il Provider "Microsoft.Jet.OLEDB.4.0"
    Il ciclo mi serve per esaminare tutti record del database
    Ti ringrazio per la tua celere risposta ma credo di non aver compreso bene:
    la stringa SQL deve essere riformulata cos?:
    DataInizio=inputbox("Inserisci la prima data")
    DataFine=inputbox("Inserisci la seconda data")
    rs.Open "SELECT * From Nazioni where Data Between & DataInizio & and & DataFine & ORDER BY Nazione"
    
    Grazie in anticipo.
    Ultima modifica di roccolamann; 20-10-2016 11:49 

  6. #6
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,503
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    Quindi SQL Server non c'entra nulla. E neanche questa sezione. Sposto in Office, VBA.

    Il ciclo mi serve per esaminare tutti record del database
    S ma il ciclo Do Until rs.EOF ... serve a questo, non il For Each che non serve.

    la stringa SQL deve essere riformulata cos ?:
    Beh, no. Hai inserito tutto tra virgolette mentre io ti ho esplicitamente detto che devi concatenare le varie parti

    "......" & variabile & "....."
    ℹ️ Leggi di pi su AntonioG ...

  7. #7
    roccolamann non  in linea Scribacchino
    Post
    519
    Like Inviati  
    0
    Like Ricevuti  
    0
    Non ho mai parlato di SQL Server.
    L'espressione For Each invece necessaria.
    Se non metto la stringa tra virgolette la routine non funziona (ripeto che si tratta di una macro VBA).
    Il problema non l'ho risolto, ma ti ringrazio lo stesso.

  8. #8
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,503
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    Quote Originariamente inviato da roccolamann Visualizza il messaggio
    Non ho mai parlato di SQL Server.
    Hai scritto tu

    Quote Originariamente inviato da roccolamann Visualizza il messaggio
    DBMS=SQL
    o no?

    L'espressione For Each invece necessaria.
    Come mai ? Se spieghi il perch ...

    Se non metto la stringa tra virgolette la routine non funziona (ripeto che si tratta di una macro VBA).
    Dipende come la metti e che intendi con "non funziona".

    Il problema non l'ho risolto, ma ti ringrazio lo stesso.
    Non l'hai risolto perch non hai detto cosa succede seguendo i miei consigli. E se fai cos con tutti quelli che ti danno consigli non potrai risolvere.
    ℹ️ Leggi di pi su AntonioG ...

  9. #9
    roccolamann non  in linea Scribacchino
    Post
    519
    Like Inviati  
    0
    Like Ricevuti  
    0
    Eseguendo la routine come l'ho scritta al principio dovrebbe elencare in un controllo Msgbox tutti i record che sono compresi tra due date: seguendo i tuoi consigli semplicemente non accade nulla.
    Ripeto che si tratta di una routine che vado ad eseguire nel VBA di WORD (Non si tratta n di Visual Basic n tantomeno di SQL Server).

  10. #10
    L'avatar di AntonioG
    AntonioG non  in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,503
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    35
    Non hai ancora mostrato comd hai seguito il mio consiglio

    Che vba si capito sin dall'inizio
    ℹ️ Leggi di pi su AntonioG ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Ricerca da VBA di una stringa all'interno di un'altra stringa
    Da giovepan nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 25-01-2017, 09:17
  2. Stringa di ricerca SQL con operatore BETWEEN
    Da roccolamann nel forum Altri Database Server
    Risposte: 7
    Ultimo Post: 20-10-2016, 13:32
  3. Risposte: 8
    Ultimo Post: 16-03-2014, 17:50
  4. Ricerca in stringa
    Da willysmb nel forum Microsoft Word
    Risposte: 9
    Ultimo Post: 28-08-2008, 16:50
  5. Errore query di ricerca (Operatore Mancante)
    Da Cis nel forum Visual Basic 6
    Risposte: 11
    Ultimo Post: 18-08-2008, 21:59