Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    52

    [vb+access] creazione dinamica di una tabella

    Salve a tutti
    Volevo chiedere se c'è un modo per creare in maniera dinamica una tabella.
    Mi spiego meglio....
    Partiamo da una tabella che ha 20 campi.

    In un forms in access ho una combo co la quale visualizzo i campi della tabella.

    Con un pulsante una volta selezionato il campo nella combo mi faccio comparire il nome del campo in una textbox.

    A questo punto vorrei tramite un'altro pulsante generare una tabella che contenga tutti i record del campo selezionato nella text box ed il nome del campo si chiami come quello selezionato.

    Pensate si possa fare?

    Grazie Lelle

  2. #2
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao lelle,
    nel seguente modo crei il DB Access e 3 Campi, il Nome della Tbl è dato dal testo inserito nella Text1.Text, per il resto è abbastanza semplice:
    codice:
    'E' necessario inserire il riferimeto a - Microsoft ADO Ext. 2.X for DDL
    'and Security - dal menù progetto riferimenti
    
    Private Sub Command1_Click()
    
        Dim tbl As New Table
        Dim cat As New ADOX.Catalog
        ' così si crea il database
        cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=D:\nuovo.mdb"
        'così si crea una tabella, il Nome è inserito in Text1.Text:
        tbl.Name = Text1.Text
        tbl.Columns.Append "Colonna1", adInteger
        tbl.Columns.Append "Colonna2", adInteger
        tbl.Columns.Append "Colonna3", adVarWChar, 50
        cat.Tables.Append tbl
    
    End Sub
    LM

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    52
    Ti ringrazio per la tua risposta...
    Sicuramente ho uno spunto da cu partire...
    A me serve principalmente creare in un db esistente la tabella e il nome lo posso dare io per default
    I nomi dei campi di questa tabella li devo prendere dalla text box ivi compresi i record.
    Cerco di essere un pò più chiaro.
    Ho un tabella con 50 campi.
    Attraverso una combo box leggo i nomi di questi campi.... in "n" input box vado a selezionare il nome dei campi che mi interessano
    Con un altro pulsante vorrei creare una tabella che si prende quei campi e record collegati....
    Allora ho pensato di sfruttare le tue indicazioni ma ovviamente mi escono un pò di errori

    Private Sub Command1_Click()

    Dim tbl As New Table
    'così si crea una tabella, il Nome è inserito in Text1.Text:
    tbl.Name = TabellaPippo
    tbl.Columns.Append "Campo1.text", adVarWChar, 50
    tbl.Columns.Append "Campo2.text", adVarWChar, 50 tbl.Columns.Append "Campo3.text", adVarWChar, 50
    cat.Tables.Append tbl

    End Sub

    Grazie
    Lelle

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    52
    Perdonatemi ho provato a scrivere queste righe di codice... ma mi da come errore Tipo definito dall'utente non definito.... in tbl

    Grazie lelle

    Private Sub Genera_Click()


    Dim tbl As New ADOX.Table
    Dim cnn As ADODB.Connection
    Set cnn = CurrentProject.Connection
    'così si crea una tabella, il Nome è inserito in Text1.Text:

    tbl.Name = "tabellatxt"

    End Sub

  5. #5
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ma il riferimento l'hai messo?
    'E' necessario inserire il riferimeto a - Microsoft ADO Ext. 2.X for DDL
    Se poi devi semplicemente creare una Tabella in un DB già esistente, allora potresti fare nel seguente modo (è un esempio che dovrai modificare secondo le tue esigenze):
    codice:
    'Crea la Tabella Clienti2:
    Private Sub Command1_Click()
    
        Dim Conn As New ADODB.Connection
        Dim OggTbl As New ADODB.Command
     
     'Esegue la connessione con il DataBase:
            Conn.ConnectionString = 'Tua stringa di connessione al DB
            Conn.CommandTimeout = 15
            Conn.Open
    
    'Crea la tabella Clienti2:
        OggTbl.ActiveConnection = Conn
        OggTbl.CommandType = adCmdText
        OggTbl.CommandText = "create table Tblclienti2(IDCliente autoincrement primary Key, Nome Text(50) Not Null, Cognome Text(50) Not Null, Indirizzo Text(100))"
        OggTbl.Execute
    
     'Chiude e cancella la connessione:
                Conn.Close
                Set Conn = Nothing
    End Sub
    LM

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    52
    In questo modo riesco a generare la tabella con i campi..... peccato che come faccio a dirgli di prendere anche i record e metterceli dietro?

    Grazie
    Lelle

    Private Sub Genera_Click()
    Dim Catalog
    Set Catalog = CreateObject("ADOX.Catalog")
    Set tbl = CreateObject("ADOX.Table")
    Set cat = CreateObject("ADOX.Catalog")

    cat.ActiveConnection = "Provider='Microsoft.Jet.OLEDB.4.0';" & "Data Source='Master.mdb';"


    tbl.Name = "Tabella_appoggio_txt"
    tbl.Columns.Append Me![Campo1].Value, adVarWChar, 50
    tbl.Columns.Append Me![Campo2].Value, adVarWChar, 50
    tbl.Columns.Append Me![Campo3].Value, adVarWChar, 50
    cat.Tables.Append tbl
    Set tbl = Nothing
    Set cat = Nothing



    End Sub

  7. #7
    Quello che vuoi fare tu si può realizzare con un'unica istruzione SQL

    codice:
    INSERT INTO NomeTabellaDestinazione SELECT NomeCampo FROM NomeTabellaOrigine
    Veramente molto facile, provare per credere.
    La preoccupazione dell'uomo e del suo destino devono sempre costituire l'interesse principale di tutti gli sforzi tecnici. Non dimenticatelo mai in mezzo a tutti i vostri diagrammi ed alle vostre equazioni.

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    52
    Il problema che ho io è diverso...
    Io parto da una tabella con 20 Campi....
    Di questa tabella me ne servono solo 4 di volta in volta diversi, è l'utente a sceglierli.
    Con una prima opzione seleziona i campi e crea una tabella con il nome di quei campi.
    Ora devo passargli i record con un accodamento e onestamente da VBA non so come fare...
    Se uso una query di accodamento di ACCESS selezionando tutti i campi funziona ma il mio problema è che ogni volta i campi della tabella di partenza e quella di fine sono diversi..
    Con l'SQL dovrei creare un'istruzione del tipo:


    INSERT INTO Tabella_appoggio_txt ( Campo1, Campo2, Campo3, Campo4 ) SELECT tutti i campi di tabella appoggio FROM tabella_appoggio;
    Se provo ad inserire select * From Tabella_appoggio mi da come errore che non è stato selezionato qualche campo da accodare a tabella_appogio_txt.

    Grazie
    Lelle

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.