Newsgroup: it.comp.programmare.win32
Titolo: trasferimento dati "esclusi"





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
news:hgnN7.29239$
4M2.7...@news2.tin.it
: 
[...]
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
[...]
Hai fatto bene a postare una descrizione (fin troppo) dettagliata del 
tuo problema, ma hai fatto male a postarla pure in HTML (e mi fa 
malissimo il fatto che l'80% del codice HTML sia composto da &nbsp;).
-- 
Valter Minute
min...@inwind.it
 (the reply address of this message is invalid)



non me ne sono rikordata all'invio...:°°°°°(((
"Valter Minute" <vmi...@REMOVEMEinwind.it> ha scritto nel messaggio
news:Xns9168864081A...@212.110.0.170...


 
http://www.uwasa.fi/~ts/http/quote.html


 
x Qesta volta 6 xdonata (ma come fate a scrivere così? Questa potevo 
abbreviarlo come Q<-a?).
P.S. La prossima volta evita di riportare completamente il messaggio a 
cui rispondi e, se devi quotare, fallo riportando il testo cui ti 
riferisci prima dei tuoi commenti.
link utili per compensare l'OT:
http://www.newsreaders.com/guide/netiquette.html
http://www.uwasa.fi/~ts/http/quote.html


 writes:
B> a)dati compresi nell'intervallo (per cui mostro un font "regolare")
B> b)dati anche delle macchine che sono presenti per un cliente,ma ke non hanno
B> MAI fatturato (risolvibile con una right join)(per cui mostro un font
B> "diverso")
B> c)dati delle macchine che hanno dei documenti cmq non compresi in
B> quell'intervallo ma per cui cmq ci sono dei doc.(per cui mostro un font
B> "diverso")
Usare 3 query con where condition apposite accodate tramite la keyword
union ?
Mi pare  che ti danni l'anima per  fare una selezione dei  dati che il
database  fa molto  meglio di  te (sopratutto  se ci  sono  gli indici
giusti).
-- 
Gian  | main(){printf(&unix["\021%six\012\0"],(unix)["have"]+"fun"-0x60);}
Uberto|                        David Korn, 1987 ioccc best one liner 
Lauri |-------------------------------------------------------------------
(aka saint) >>Vedere X-Nospam nell'header - See X-Nospam field in Header<<

 l'ho rimandata in versione normale :)
Quotare please, QUOTARE!!!!!!!!
-- 
Luc.

> l'ho rimandata in versione normale :)
L> Quotare please, QUOTARE!!!!!!!!
Credo che quella fosse al 99% "farina del suo post"....
