Newsgroup: it.comp.lang.visual-basic
Titolo: Chi sà fare di meglio !!!!!

Ciao a tutti e scusate .. il disturbo :)
Aiutatemi č lentissima !!!!!!!!!!!!!!
Conoscete una soluzione migliore ?????????
NB. AS400 č un coltrollo data (Ado)
Questa č al routine :
Set rsclienti = New ADODB.Recordset
Set rsrapportini = New ADODB.Recordset
rsclienti.CursorLocation = adUseClient
rsrapportini.CursorLocation = adUseClient
rsclienti.Open "SELECT GV03,GV04,GV05 FROM GVCLI WHERE GV03='A1' ",
AS400.ConnectionString, adOpenKeyset, adLockOptimistic, adCmdText
rsrapportini.Open "SELECT GV05,GV06,GV07 FROM GVRAP WHERE GV05='A1' ",
AS400.ConnectionString, adOpenKeyset, adLockOptimistic, adCmdText
rsclienti.MoveFirst
While Not rsclienti.EOF
  flag = False
  rsrapportini.MoveLast
    While (Not rsrapportini.BOF) And (flag = False)
        If rsclienti!gv04 = rsrapportini!gv06 Then
            grid.AddItem rsclienti!gv05
            flag = True
        End If
        rsrapportini.MovePrevious
    Wend
  rsclienti.MoveNext
Wend
RSrapportini contiene 10.000 record...
RsClienti 1000 record...
Come posso fare x renderela + veloce ?
Grazie....


dunque... se ho capito bene le relazioni che esistono fra le due tabelle
puoi aprire un unico recordset che ti restituisca solo i record che ti
interessano
in quel comando SQL la clausola where indica quali campi mettono in
relazione
le due tabelle tra loro
Set rsRecordset = New ADODB.Recordset
strSql = "SELECT GVCLI.GV05 FROM GVCLI, GVRAP "
strSql = strSql & " WHERE GVCLI.GV04 = GVRAP.06 "
strSql = strSql & " AND GVCLI.GV03 = GVRAP.05 "
strSql = strSql & " AND GVCLI.GV03 = 'A1'"
rsRecordset.Open strSql, AS400.ConnectionString, adOpenForwardOnly
flag = not rsRecordset.eof
Do While not rsRecordset.eof
    grid.AddItem rsRecordset!gv05
    rsRecordset.movenext
loop
se ho azzeccato le relazioni questo dovrebbe essere nettamente piu' veloce
se non le ho azzeccate... ti ho indicato una buona via per sistemare le
cose...
Ciao
Enrico

Il problema è che non mi servono tutti i record della relazione
ma solo il primo trovato scorrendo Rsrapportini dal basso verso l' alto.
Grazie 10000


 AS400.ConnectionString, adOpenKeyset, adLockOptimistic, adCmdText
Visto che i recordset non li devi aggiornare, usa asLockReadOnly al posto di
adLockOptimistic su
tutti e due i recordset
Di piů non saprei.......
Ciao
Sergio
P.S. fammi sapere se almeno ottieni un miglioramento......

Mettiamo un pň d'ordine.
Se non ho capito male, tu devi estrarre il rapportino piů recente per ogni
cliente. Giusto?
cioč:
Set rsRapportini = New ADODB.Recordset
rsRapportini.CursorLocation = adUseClient
sSqlString= "SELECT GVCLI.GV03, GVCLI.GV04, GVCLI.GV05, Query1.*, GVRAP.GV05
FROM (GVCLI inner join
(SELECT GVRAP.GV06 AS cliente, Max(GVRAP.GV07) AS maxdate FROM GVRAP GROUP
BY GVRAP.GV06) as Query1
on GVCLI.GV04= Query1.cliente
INNER JOIN GVRAP ON (Query1.maxdate = GVRAP.GV07) AND (Query1.cliente =
GVRAP.GV06))
WHERE GVCLI.GV03='A1' "
rsrapportini.Open sSqlString, AS400.ConnectionString, adOpenKeyset,
adLockOptimistic, adCmdText
Cosě hai 1 solo recordset che contiene i dati dei tuoi clienti E i dati del
rapportino piů recente.
Spero di non avere fatto casino con tutti quei GV...
Comunque, al massimo si tratta di cambiare qualche nome. La query č ok.
(tra parentesi, non mi intendo di AS, ma non si puň proprio fare di meglio
che chiamare tuttO GV01, GV02, GV03... ?????!!!!!)
ciao
ugo

 wrote in message
news:8sqlmr$rav$1...@pegasus.tiscalinet.it...


Vero, anche per i dati denormalizzati, trovati in abbondanza le poche volte
che ho dovuto averci a che fare.
Credo però che il limite non sia dell'ambiente...
ciao
ugo

 wrote in message
news:8sqnbi$fh4$1...@lacerta.tiscalinet.it...


 wrote in message
8sqmr7$l8f6m$1...@ID-56381.news.cis.dfn.de...


 8sqmr7$l8f6m$1...@ID-56381.news.cis.dfn.de...
