Newsgroup: it.comp.appl.access
Titolo: Assegnare valore stringa mediante variabile

Devo operare, in modo simile, su quattro stringhe; pensavo in una routine
di usare una variabile, chiamarle st1, st2 ecc. e fare cosě un ciclo del
tipo:
Dim st1 as string, st2 as ...
st1 = <prima stringa>
st2 = <seconda stringa>
...
For u = 1 to 4
   "st" & u = <quello che ci devo fare>
 
oppure trattare una Stringa cosě:
For u = 1 to 4
   Stringa = "st" & u
   <operazioni>
   "st" & u = Stringa
 
ma non so che sintassi usare.
Esiste il modo di fare questi riferimenti?
Grazie a tutti.
Riccardo Baldinotti
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 Esiste il modo di fare questi riferimenti?
 
Ciao Riccardo!
 
IMVHO eval non è di aiuto, quindi ti tocca usare un accrocchio di questo tipo (sfruttando il meccanismo del byref).
 
dim st1 as string, st2 as string, st3 as string, st4 as string
for u=1 to 4
   UnaStringa "st" & u, <quello che ci devi fare>
next
 
public sub UnaStringa(byref MiaVariabile as string, byval MioValore as string)
 
    MiaVariabile=MioValore
 
end sub
 
HTH
Popi

 Riccardo Baldinotti
 
Usa un array, p.e.
 
Dim str(3) As String
Dim i As Long
 
str(0) = "a"
str(1) = "b"
str(2) = "c"
str(3) = "d"
 
For i = 0 To 3
    Debug.Print str(i)
Next i
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 

 Next i
 
Stavo usando la soluzione di Popi, al quale per� vado a rispondere per
qualche "problemino".
Grazie.
RB


 qualche "problemino".
 
Ciao Riccardo!
 
What "problemino"?
 
Popi

 What "problemino"?
 
Dunque, il discorso è questo.
Ho quattro query di cui voglio aggiornare la clausola "ColumnHeadings" per
aggiungere gli anni dal 2011 a ora (il quale "ora", fra un anno, sarà un
anno in più).
L'idea è di modificare questa  stringa:
    sq1 = "TRANSFORM Count(qzSLmesianni.datainizio) AS quantiI1 " & _
        "SELECT qzSLmesianni.IDope  " & _
        "FROM qzSLmesianni " & _
        "WHERE (((qzSLmesianni.dalm) < 7) And ((qzSLmesianni.dala) >
1980)) " & _
        "GROUP BY qzSLmesianni.IDope " & _
        "PIVOT qzSLmesianni.dala In ("
 
E altre stringhe simili sq2, sq3 e sq4, aggiungendo l'ultima parte e col
risultato modificare delle query i cui nomi sono
    q1 = "aperture 1 sem"
    q2 = "aperture 2 sem"
    q3 = "chiusure 1 sem"
    q4 = "chiusure 2 sem"
Quindi io chiamerei una sub
    For u = 1 To 4 '
        Call sFaiStringa("sq" & u, "q" & u)
    Next '
 
Che fa questo
Private Sub sFaiStringa(ByRef Stringa As String, ByRef Quer As String)
    Dim QDF As QueryDef
    Dim anno As Integer
    For anno = 2011 To Year(Now())
        Stringa = Stringa & Chr(34) & anno & Chr(34) & ","
    Next
    Stringa = Left(Stringa, Len(Stringa) - 1) & ");"
    Set QDF = CurrentDb.QueryDefs(Quer) '
    QDF.SQL = Stringa
End Sub
 
Ma non c'è ByVal o ByRef che tenga: Stringa è uguale a "sq1" anziché al
suo valore e cerca di aprirmi una QueryDef di nome "q1", anziché "aperture
1 sem".
 
Mentre chiedo pietà per il massacro perpetrato ai danni di VBA, chiedo
anche aiuto per uscire dal labirinto.
Grazie
