Field Schema

Come posso recuperare la lunghezza di un campo da Field Schema ???
Ho creato una listbox con i record di tutte le tabelle, ma non riesco a recuperare la lunghezza di campi di tipo varchar …

  Dim db as New REALSQLDatabase
  db.DatabaseFile = GetFolderItem(main.database)
  
  If Not db.Connect then
    msgbox("errore nella lettura del database, prego contattare l'autore del programma")
  else
    
    Dim tables As RecordSet
    dim fields as RecordSet
    tables = db.TableSchema
    
    If tables <> Nil Then
      While Not tables.EOF
        ' ottengo l'elenco dei campi 
        
        fields = db.FieldSchema(tables.IdxField(1).StringValue)
        
        if fields <> Nil then 
          while Not fields.EOF
            Listbox1.AddRow ""
            Listbox1.Cell(Listbox1.ListCount -1, 0) = tables.IdxField(1).StringValue
            Listbox1.Cell(Listbox1.ListCount -1, 1) = fields.IdxField(1).StringValue
            
            select case fields.IdxField(2).IntegerValue
            case 0
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Null"
            case 1
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Byte"
            case 2
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "SmallInt"
            case 3
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Integer"
            case 4
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Char"
            case 5
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "VarChar or Text"
            case 6
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Float"
            case 7
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Double"
            case 8
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Data"
            case 9
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Ora"
            case 10
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "TimeStamp"
            case 11
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Valuta"
            case 12
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Boolean"
            case 13
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Decimale"
            case 14
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Binary"
            case 15
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Testo molto lungo"
            case 16
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Blob"
            case 17
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Immagine Mac"
            case 18
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Stringa"
            case 19
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Intero"
            case else
              Listbox1.Cell(Listbox1.ListCount -1, 2) = "Sconosciuto"
            end select
            
            Listbox1.Cell(Listbox1.ListCount -1, 3) = fields.IdxField(2).StringValue
            Listbox1.Cell(Listbox1.ListCount -1, 4) = fields.IdxField(3).StringValue
            fields.MoveNext
          wend
          
        end if
        
        tables.MoveNext
      Wend
      tables.Close
    End If
    
  end if

dim l as integer
l = len(fields.IdxField(1).StringValue)

credo funzioni

ciao

anzi meglio …

dim l as integer
l = len(RTrim(fields.IdxField(1).StringValue))

Su quale tipo di database?

Che ti devo dire Luicano, SEI UN GRANDE!
Grazie!

Da fieldSchema:
1->Nome del campo
2->Tipo
3->se campo chiave
4->Se non pu essere messo a null
5->Lunghezza del campo

NB: la lunghezza del campo dipende dal database, ad esempio per sqllite non c’ in quanto non ha una lunghezza massima per il contenuto.