Newsgroup: it.comp.lang.visual-basic
Titolo: ci riprovo! :)

Ciao a tutti!
Uso vb6 e msde.
Sto creando un report Lista Prelievi in cui agisco con 2 tabelle,Documenti e
Macchine, legate fa esse dal codice macchina che fattura.
Le macchine appartengono a un reparto , legato ad una locazione, legata a un
cliente.
Vorrei ottenere una lista composta da:
locazione     -    codice      -     data prelievo attuale      -
data prelievo precedente
Applico sui dati un filtro date ATTUALE prelievo dato da utente e qui nasce
il problema.
Vorrei filtrare vari tipi di dati ovvero:
a)dati compresi nell'intervallo (per cui mostro un font "regolare")
b)dati anche delle macchine che sono presenti per un cliente,ma ke non hanno
MAI fatturato (risolvibile con una right join)(per cui mostro un font
"diverso")
c)dati delle macchine che hanno dei documenti cmq non compresi in
quell'intervallo ma per cui cmq ci sono dei doc.(per cui mostro un font
"diverso")
Ricapitolo con un esempio (posto come filtro date dall'1/1/00 al 31/12/00):
loc.       -    codice      -     data prelievo attuale      -         data
prelievo precedente
1°piano       300027           01/01/00
....                                 (ho doc nel range)
1°piano       100029           02/02/00
....                                 (ho doc nel range)
1°piano       100029           03/10/00
....                                 (ho doc nel range)
1°piano       100029           10/12/00
....                                 (ho doc nel range)
3°piano       300026
(non ho NESSUN doc x qs. makkina)
3°piano       100028
(non ho NESSUN doc x qs. makkina)
1°piano       100030
(ho doc x qs. makkina ma dl '99,quindi fuori range)
Per qs. stampa uso un db tmp di access pikkolo che mi serve anche per
altro.semplicemente filtro i dati dalle tabelle di msde e le importo in una
tabella access ListaPrelievi ,cosi' poi ho gia' tutti i dati belli e pronti.
Ho una procedura Tr_Dati_Generale che allego (all'ottimizzazione ci penso
poi,lo so ke cosi' fa schifo......voglio che funga!!!!)  :)
Private Sub TrDati_Generale()
    Dim dbDest As ADODB.Connection, rsDest As ADODB.Recordset
    Dim rsTmp As ADODB.Recordset
    Dim sSql As String
    Dim flg1v As Boolean
   Set dbDest = New ADODB.Connection
    dbDest.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Jet OLEDB:Database Password='';" & _
        "Persist Security Info=False;" & _
        "Data Source=" & sStampeMDBTmp (<-- qui ho la path del dba ccess)
    dbDest.Open
    Set rsDest = New ADODB.Recordset
    rsDest.Open "ListaPrelievi", dbDest, adOpenKeyset, adLockOptimistic
    sSql = "SELECT Macchine.CodMacchina, Macchine.Attivo, " & _
           "Locazioni.Descrizione, Documenti.DtaPrecPrelievo," & _
           "Documenti.OraPrecPrelievo, Documenti.DtaAttualePrelievo," & _
           "Documenti.OraAttualePrelievo FROM dbo.Documenti RIGHT JOIN " & _
           "Macchine ON Documenti.CodMacchina = Macchine.CodMacchina INNER "
& _
           "JOIN Reparti ON Macchine.CodReparto = Reparti.CodReparto INNER "
& _
           "JOIN Locazioni ON Reparti.CodLocazione =
dbo.Locazioni.CodLocazione " & _
           "INNER JOIN Clienti ON Locazioni.CodCliente = Clienti.CodCliente"
    Set rsTmp = New ADODB.Recordset
    rsTmp.Open sSql, MyDb, adOpenKeyset, adLockOptimistic
    flg1v = True
    While Not rsTmp.EOF
        With rsTmp
            ' se ritrovo dei doc. in quel range di date ne salvo i dati...
            If ![DtaAttualePrelievo] >= CDate(csiDtDal.Text) And
![DtaAttualePrelievo] <= CDate(csiDtAl.Text) Then
                rsDest.AddNew
                ' codice macchina, stato PV e Locazione di riferimento
                rsDest![Macchina] = ![CodMacchina]
                rsDest![PVAttivo] = ![Attivo]
                rsDest![Locazione] = ![Descrizione]
                rsDest![ModificaFont] = False
                rsDest![DataAttuale] = ![DtaAttualePrelievo]
                rsDest![DataPrecedente] = ![DtaPrecPrelievo]
                rsDest![OraAttuale] = ![OraAttualePrelievo]
                rsDest![OraPrecedente] = ![OraPrecPrelievo]
                rsDest.Update
            Else
                ' makkine ke non hanno MAI fatturato ma ci sono...
                If IsNull(![DtaPrecPrelievo]) And
IsNull(![DtaAttualePrelievo]) Then
                    rsDest.AddNew
                    ' codice macchina, stato PV e Locazione di riferimento
                    rsDest![Macchina] = ![CodMacchina]
                    rsDest![PVAttivo] = ![Attivo]
                    rsDest![Locazione] = ![Descrizione] & ""
                    '...altrimenti campi vuoti e devo modificare il font
                    rsDest![ModificaFont] = True
                    rsDest.Update
                End If
'-----------------------------------------------------------------------
                ' se la macchina "non corrispondente" è già
                ' presente non la riporto....
                If flg1v = False Then
                    rsDest.Find "[Macchina]='" & ![CodMacchina] & "'", , , 1
                    If rsDest.EOF Then
                        If Not IsNull(![DtaPrecPrelievo]) And Not
IsNull(![DtaAttualePrelievo]) Then
                            rsDest.AddNew
                            ' codice macchina, stato PV e Locazione di
riferimento
                            rsDest![Macchina] = ![CodMacchina]
                            rsDest![PVAttivo] = ![Attivo]
                            rsDest![Locazione] = ![Descrizione] & ""
                            '...altrimenti campi vuoti e devo modificare il
font
                            rsDest![ModificaFont] = True
                            rsDest.Update
                        End If
                    End If
                Else
                    flg1v = False
                    If Not IsNull(![DtaPrecPrelievo]) And Not
IsNull(![DtaAttualePrelievo]) Then
                        rsDest.AddNew
                        ' codice macchina, stato PV e Locazione di
riferimento
                        rsDest![Macchina] = ![CodMacchina]
                        rsDest![PVAttivo] = ![Attivo]
                        rsDest![Locazione] = ![Descrizione] & ""
                        '...altrimenti campi vuoti e devo modificare il font
                        rsDest![ModificaFont] = True
                        rsDest.Update
                    End If
                End If
            End If
            .MoveNext
        End With
    Wend
    Set rsDest = Nothing
    Set rsTmp = Nothing
    Set dbDest = Nothing
End Sub
Alla faccia della sintesi......:-))))
Dopo l'estrema fatica che avrete fatto per capire cosa ho scritto,rivelo il
mio problema.
Nel terzo caso,ovvero se ho delle macchine che hanno fatturato ma non
appartengono al range stabilito ho delle righe,mi vengono visualizzate delel
righe che non voglio.
loc.       -    codice      -     data prelievo attuale      -         data
prelievo precedente
1°piano       300027           01/01/00
....                                 (ho doc nel range)
1°piano     300027           (ho dei doc '99)                          ....
(ho doc del 99)        <---non la voglio!!
1°piano       100029           02/02/00
....                                 (ho doc nel range)
1°piano       100029           03/10/00
....                                 (ho doc nel range)
1°piano       100029           10/12/00
....                                 (ho doc nel range)
3°piano       300026
(non ho NESSUN doc x qs. makkina)
3°piano       100028
(non ho NESSUN doc x qs. makkina)
1°piano       100030
(ho doc x qs. makkina ma dl '99,quindi fuori range)
se non faccio visualizzare quelle fuori range non vengono nemmeno
visualizzate quelle senza nulla!!!
non so piu' che fare!!!
grazie dell'aiuto...
Beba

 wrote in message
lEqN7.28766$BA4.9...@news1.tin.it...


 ha scritto nel messaggio
news:iYsN7.29246$BA4.9...@news1.tin.it...


mmmmmmmmmmm..............:(((
  Il quoting, per l'inferno!
  Ciao :-)
  Massimo
  Nell'indirizzo, inserire una "h" tra la "t" e la "u"
  In the address, insert an "h" between the "t" and the "u"

 Ciao a tutti!
[mega cut]

perchè non usi semplicemente una query Sql?
Postaci la struttura delle tabelle, se hai dei dubbi, così risolviamo per la
via breve...
ciao
ugo


Ti invio la struttura delle tabelle
Documenti:IdDoc(int),CodMacchina(6),DtaPrecPrelievo(date),DtaAttualePrelievo
(date),OraPrecPrelievo(5),OraAttualePrelievo(5)
Macchine:CodMacchina(6),Descrizione(60),DtInstallazione(date),CodReparto(10)
Reparti:CodReparto(10),Descrizione(70),CodLocazione(10)
Locazioni:CodLocazione(10),Descrizione(70),CodCliente(int)
Clienti:CodCliente(int),Nominativo(60)
Ho gia fatto delle prove con le query,ma se riesco a risolvere una
condizione l'altra mi rimane! °(