Newsgroup: it.comp.lang.visual-basic
Titolo: FieldName Query

Salve,
ho bisogno di creare una query su di una tabella andando a prendermi solo
alcuni campi denominati in un certo modo.
Vado a spiegarmi meglio:
ho una tabella i cui campi si generano da soli, via codice. I campi in
questione possono avere prima il suffisso "Entrata" o "Uscita" seguito da un
determinato ID.
Ora avrei bisogno, non sapendo quindi quanti campi ci possono essere nella
mia tabella, di estrapolare ad esempio solo il contenuto di tutti i campi il
cui "FieldName" inizia x "Entrata".
C'� la possibilit� via codice di creare una query di questo genere?...
Grazie x gli aiuti,
TG

Mentre mi apprestavo a riciclare alcuni bit, *TG* ha scritto:

A grandi linee:
(rsTabella � un recordset ADO aperto sulla tua tabella)
Dim sQuery As String
Dim sFieldList As String
Dim lCnt As Long
'Esegue un ciclo per ogni campo della tabella
For lCnt = 0 To rsTabella.Fields.Count - 1
    'Verifica che il nome del campo inizi per "Entrata"
    If InStr(rsTabella.Field(lCnt).Name, "Entrata") = 1 Then
        'Accoda il campo alla lista dei campi
        sFieldList = sFieldList & rsTabella.Field(lCnt).Name & ","
    End If
    'Toglie l'ultima virgola che generebbe un errore nella query
    sFieldList = Left(sFieldList, Len(sFieldList) - 1)
Next
'Crea la query
sQuery = "SELECT " & sFieldList & " FROM MiaTabella"
-- 
3st3b4n
Questo post � stato scritto con bit riciclati 

 C'� la possibilit� via codice di creare una query di questo genere?...
farei qualcosa del tipo..... (DAO)
select * from tab where campoID < 1
mi da il recodset con solo la lista dei campi e nessun record
poi con un ciclo..
nuovaSql= "select "
for x = 1 to rs.fiels.count -1
    if left(rs.fields(x).name , 7) = "Entrata" then
        nuovasl = nuovasql & rs.fields(x).name
   end if
next
greg

Mentre mi apprestavo a riciclare alcuni bit, *3st3b4n* ha scritto:

Errata corrige:
Dim sQuery As String
Dim sFieldList As String
Dim lCnt As Long
'Esegue un ciclo per ogni campo della tabella
For lCnt = 0 To rsTabella.Fields.Count - 1
   'Verifica che il nome del campo inizi per "Entrata"
   If InStr(rsTabella.Fields(lCnt).Name, "Entrata") = 1 Then
       'Accoda il campo alla lista dei campi
       sFieldList = sFieldList & rsTabella.Fields(lCnt).Name & ","
   End If
   'Toglie l'ultima virgola che generebbe un errore nella query
Next
sFieldList = Left(sFieldList, Len(sFieldList) - 1)
'Crea la query



Metodo alternativo che sfrutta il (poco) conosciuto metodo OpenSchema 
dell'oggetto Connection:.
Dim cn As New Connection
Dim rs As Recordset
Dim FieldList As String
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<percorso 
database>"
    Set rs = cn.OpenSchema(adSchemaColumns)
    rs.Filter = "(TABLE_NAME='MyTable') AND (COLUMN_NAME LIKE 'Entrata*')"
    Do While Not rs.EOF
        If FieldList = "" Then
            FieldList = rs("COLUMN_NAME").Value
        Else
            FieldList = FieldList & "," & rs("COLUMN_NAME").Value
        End If
        rs.MoveNext
    Loop
    rs.Close
    Set rs = cn.Execute("SELECT " & FieldList & " FROM MyTable")
    ...
Bye
Raf 

 ha scritto nel messaggio 
news:76vtbsF...@mid.individual.net...
