Newsgroup: it.comp.appl.access
Titolo: [parecchio lungo] query a campi incrociati con complicazioni varie

>>>>  
http://www.bb2002.it
 :)  <<<<<
........... [ al lavoro ] ...........

 
 
ho automatizzato al query con un paio di cicli for next
 
adesso mi prepara la stringa SQL con i nomi dei mesi (campi) variabili in 
base alla data limite di elaborazione :)
 
non č servito farne due per distinguere i carichi dagli scarichi :)
 
ora di tratta di aprire a video la tabella generata da questa query... :(
 
come faccio?
intendo dire: se la devo usare in una elaborazione me la cavo con del 
codice tipo
 
Dim dbs  As DAO.Database
Dim MYSQL As DAO.Recordset
Set dbs = CurrentDb
Set MYSQL = dbs.OpenRecordset(strSQL)
 
 
ma come faccio per una semplice visualizzazione dei dati?
 
grazie


Se non ho capiuto male...:
 
Docmd.OpenQuery "NomeQuery"
 
 
@Alex

 
 
eh, ma io la query la ho solo (per il momento) costruita col codice
dovrei salvarla (sovrascrivendo la vecchia) oppure eseguirla mandando 
l'output a video
 
 
questa (sembra funzionare...)
 
Private Sub BuildQuery()
 
Dim strSQL As String
 
Dim i, j As Integer
 
strSQL = strSQL & "SELECT " & vbCrLf
strSQL = strSQL & "qUnionMatchcode.Manufacturer, " & vbCrLf
strSQL = strSQL & "qUnionMatchcode.Name, " & vbCrLf
strSQL = strSQL & "qUnionMatchcode.MatchCode, " & vbCrLf
strSQL = strSQL & "Items.ItemCode, " & vbCrLf
strSQL = strSQL & "Items.Description, " & vbCrLf
 
For i = 1 To 11
 
    strSQL = strSQL & 
"IIf(Nz([Items].[Quantity])=Null,0,Nz([Items].[Quantity])) " & vbCrLf
 
    For j = 1 To 13 - i
 
        strSQL = strSQL & "-Nz([Mov-" + Format(j - 1) + "-In],0)-Nz([Mov-" 
+ Format(j - 1) + "-Out],0) " & vbCrLf
 
    Next j
 
    strSQL = strSQL & " AS [Qty-" + Format(DateAdd("m", -(12 - i), 
[Forms]![Parameters]![EndDate]), "mmm") + "-" + Format(DateAdd("m", -(12 - 
i), [Forms]![Parameters]![EndDate]), "yyyy") + "], " & vbCrLf
    strSQL = strSQL & " " & vbCrLf
 
    strSQL = strSQL & "qMovementsPerMonth.[Mov-" + Format(12 - i) + "-In] 
AS " + "[In-" + Format(DateAdd("m", -(12 - i), 
[Forms]![Parameters]![EndDate]), "mmm") + "], " & vbCrLf
    strSQL = strSQL & "qMovementsPerMonth.[Mov-" + Format(12 - i) + "-Out] 
AS " + "[Out-" + Format(DateAdd("m", -(12 - i), 
[Forms]![Parameters]![EndDate]), "mmm") + "], " & vbCrLf
 
Next i
 
 
 
strSQL = strSQL & 
"IIf(Nz([Items].[Quantity])=Null,0,Nz([Items].[Quantity])) " & vbCrLf
strSQL = strSQL & " AS [Qty-" + Format(DateAdd("m", 0, 
[Forms]![Parameters]![EndDate]), "mmm") + "-" + Format(DateAdd("m", 0, 
[Forms]![Parameters]![EndDate]), "yyyy") + "], " & vbCrLf
strSQL = strSQL & " " & vbCrLf
 
strSQL = strSQL & "Items.Price, " & vbCrLf
strSQL = strSQL & "[Price]*[Qty-0] AS [Value], " & vbCrLf
strSQL = strSQL & "Items.Total " & vbCrLf
strSQL = strSQL & " " & vbCrLf
 
strSQL = strSQL & "FROM qUnionMatchcode " & vbCrLf
 
strSQL = strSQL & "LEFT JOIN (Items " & vbCrLf
strSQL = strSQL & "LEFT JOIN qMovementsPerMonth ON Items.MatchCode = 
qMovementsPerMonth.MATCHCODE) ON (qUnionMatchcode.MATCHCODE = 
Items.MATCHCODE) " & vbCrLf
strSQL = strSQL & "AND (qUnionMatchcode.NAME = Items.NAME) " & vbCrLf
strSQL = strSQL & "AND (qUnionMatchcode.Manufacturer = Items.Manufacturer) 
" & vbCrLf
strSQL = strSQL & " " & vbCrLf
 
strSQL = strSQL & "ORDER BY Items.Manufacturer, Items.Description; " & 
vbCrLf
 
'DoCmd.RunSQL (strSQL)
Stop
 
End Sub


 
 
strSQL = strSQL & "INTO Status " & vbCrLf
 
...
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
 
e poi apro la tabella Status a tutto schermo
 
adesso c'è giusto da trovare eventuali errori di calcolo ma il grosso è 
fatto :)


Dbengine(0)(0).Querydefs("nomequery").SQL="Select..."
 
@Alex

Il 22/11/19 14:10:38 Ammammata ha scritto:
 
MI sembra abbastanza complessa, che tempi di esecuzione richiede?
 
-- 
Greg

 
 
dici bene, *sembra* complessa, ma alla fine i dati da elaborare oggi sono 
relativamente pochi (i singoli movimenti, circa 5000 da inizio febbraio, 
vengono preventivamente cumulati mensilmente per prodotto e si riducono a 
circa 500) per cui se la cava in meno di mezzo secondo
 
 
-- 
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [  da casa  ] ...........