+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 2 su 2

Discussione: stringa SQL e VBA

  1. #1
    weldor non è in linea Scolaretto
    Post
    79

    stringa SQL e VBA

    Buona sera,
    Invece di utilizzare la funzione Dsum riferita ad una query, vorrei inserire una stringa SQL dentro il codice VBA, ma dopo diversi tentativi non riesco a trovare una soluzione.
    Il valore che devo estrarre, vorrei visualizzarlo in una casella di testo (Testo78)
    Ecco il codice:

    Private Sub Comando75_Click()

    Dim strSQL As String
    strSQL = "SELECT Sum(DdtVenditaDettaglio.QuantitàSpedita) AS SommaDiQuantitàSpedita" & _
    "FROM DdtVendita INNER JOIN DdtVenditaDettaglio ON DdtVendita.IDDdt = DdtVenditaDettaglio.IDDdt2" & _
    "GROUP BY DdtVendita.IDOrdine HAVING (((DdtVendita.IDOrdine)= '" & IDOrdine & "'));"
    DBEngine(0)(0).Execute strSQL, dbFailOnError

    Testo78 = strSQL

    End Sub

    grazie per l'aiuto
    Buon Natale

    Weldor

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    15,981
    Stai commettendo una serie di errori rilevanti.
    Il predicato SQL potrebbe anche essere corretto...
    Comemtti 2 errori sostanziali, primo è che una QUERY SELECT non si esegue con EXECUTE che invece serve per le ACTION QUERIES, e questo aprendo l'Help e la guida dovevi vederlo da solo...
    Secondo il concetto di aprire un Recordset passa per l'oggetto recordset stesso, che tu nemmeno prendi in considerazione, assoviando il predicato SQL al controllo Testo78...

    Devi aprire un Recordset sul predicato SQL il Recordet contiene RECORDS(nel tuo caso solo 1, quello con IDORDINE corrispondente) e CAMPI(nel tuo caso solo 1 chiamato SommaDiQuantitàSpedita).

    QUindi per accedere al Campo del Recordset devi leggere la proprietà VALUE del FIELD specifico, passando per la Collection FIELDS indicizzata per NOMECAMPO o per INDICECAMPO...
    codice:
    Dim rs AS DAO.Recordset
    Set rs=DbEngine(0)(0).OpenRecordset(strSQL)
    If Not rs.Eof then 
        Me!Testo78.Value=rs.Fields("SommaDiQuantitàSpedita").Value
    End If
    rs.close
    set rs=Nothing
    devi tuttavia concentrarti sui dettagli, cosa che hai completamente tralasciato...
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi