Aggiungere tabelle con record in db access

di orione1976 il
36 risposte
Ciao a tutti, sto cercando questa cosa in rete ma non trovo granchè, forse si puo fare o forse non lo trovo perchè non è possibile?
Ho collegato un db.mdb access al mio progetto in vb.net, premetto che ho pensato a tutto quello che mi serve e il db dovrebbe rimanere così penso, ma in caso ci fosse necessità, mediante codice vb è possibile aggiungere tabelle e record in un db già associato al progetto?

Lo chiedo perchè ovviamente se effettuo questa modifica nel db da access poi non posso usare il db modificato in vb senza ricaricarlo.

Non so se sono stato chiaro ma se è possibile potete aiutarmi o indicarmi dove studiare questa cosa?

Grazie

36 Risposte

  • Perfetto.... grazie come sempre, vado a studiare la situazione, faccio quslcge prova e solo dopo se ho problemi.... chiefo nuovamente...
  • Ciao eccomi nuovamente.... allora, ho visto un po di cose e alla fine sono riuscito a creare quello che mi serve, uso una cosa del genere... è solo un test
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Appoggio\testDB.mdb"
            Dim sQuery As String = "CREATE TABLE Marco (" &
                "id INTEGER IDENTITY(1,1) PRIMARY KEY NOT NULL," &
                "Nome VARCHAR(255)," &
                "Cognome VARCHAR(255)," &
                "Soprannome VARCHAR(255)" &
                ")"
            Dim myconnection As New OleDbConnection(connString)
            Dim dbcmd As New OleDbCommand
            Try
                myconnection.Open()
                dbcmd.Connection = myconnection
                dbcmd.CommandText = sQuery
                dbcmd.ExecuteNonQuery()
                MsgBox("creata")
                myconnection.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
                myconnection.Close()
            End Try
        End Sub
    Quindi ovviamente funziona, è abbastanza semplice l'unica cosa che non riesco a fare è cambiare il nome della Tabella da creare, nell'esempio crea Marco ma se volessi scegliere il nome? ho provato varie soluzioni ma non riesco, vorrei inserire un nome da una textboxe per esempio ma sbaglio qualcosa nella sintassi, ho provato virgolettandolo etc.... boh... non so farlo, cosa dovrei fare?

    Grazie in anticipo

    P.S. ovviamente il Database è già creato mi servirebbe per aggiunte eventuali...
  • No... vabbè, scusate.... ho risolto... bastava mettere "CREATE TABLE " & textbox1.text & "
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Appoggio\testDB.mdb"
            Dim sQuery As String = "CREATE TABLE " & TextBox1.Text & " (" &
                "id INTEGER IDENTITY(1,1) PRIMARY KEY NOT NULL," &
                "Nome VARCHAR(255)," &
                "Cognome VARCHAR(255)," &
                "Soprannome VARCHAR(255)" &
                ")"
            Dim myconnection As New OleDbConnection(connString)
            Dim dbcmd As New OleDbCommand
            Try
                myconnection.Open()
                dbcmd.Connection = myconnection
                dbcmd.CommandText = sQuery
                dbcmd.ExecuteNonQuery()
                MsgBox("creata")
                myconnection.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
                myconnection.Close()
            End Try
        End Sub
    Come non detto... Grazie comunque
  • Ciao a tutti, sapreste dirmi per quale motivo, il codice di seguito postato che in altro form come test funziona bene e adesso in questo definitivo mi da errore di sintassi in CREATE TABLE
    Dim provider As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
    Dim datafie As String = "D:\DBPWD.mdb;Persist Security Info=True;Jet OLEDB:Database Password=passuord"
    Dim connString As String = provider & datafie
    If tbDATABASE.Text = "" Then
    MsgBox("Inserire il nome del Database da CREARE!", MsgBoxStyle.Information)
    Exit Sub
    End If
    If cbDATABASE.Items.Contains(tbDATABASE.Text) Then
    MsgBox("Database già presente in archivio!", MsgBoxStyle.Exclamation)
    tbDATABASE.Text = ""
    Exit Sub
    Else
    cbDATABASE.Items.Add(tbDATABASE.Text$)
    tbDATABASE.Text = ""
    If cbDATABASE.Items.Count > 0 Then
    My.Settings.comboitems.Clear()
    For Each i As String In cbDATABASE.Items
    My.Settings.comboitems.Add(i)
    Next
    My.Settings.Save()
    Else
    My.Settings.comboitems.Clear()
    End If
    Dim sQuery As String = "CREATE TABLE " & tbDATABASE.Text & " (" &
    "id INTEGER IDENTITY(1,1) PRIMARY KEY NOT NULL," &
    "Dominio VARCHAR(255)," &
    "Username VARCHAR(255)," &
    "Password VARCHAR(255)," &
    "Pin VARCHAR(255)," &
    "Link VARCHAR(255)," &
    "Note1 VARCHAR(255)," &
    "Note2 VARCHAR(255)," &
    "Note3 VARCHAR(255)" &
    ")"
    Dim myconnection As New OleDbConnection(connString)
    Dim dbcmd As New OleDbCommand
    Try
    myConnection.Open()
    dbcmd.Connection = myConnection
    dbcmd.CommandText = sQuery
    dbcmd.ExecuteNonQuery()
    MsgBox("Database CREATO con successo!", MsgBoxStyle.Information)
    myconnection.Close()
    Catch ex As Exception
    MsgBox(ex.Message)
    myConnection.Close()
    End Try
    End If
    per quale motivo secondo voi?
  • Id AUTOINCREMENT PRIMARY KEY NOT NULL
  • Ok e cosa c'è di sbagliato li?
    E sopratutto perché non da sempre errore visto che in una form che uso per i test funziona?

    Se sai indicarmi il perchè, mi fai un favore almeno capiaco qualcosa in piu.

    Grazie tante...
  • Tu usi Access o SQL Server?
  • Io uso access
  • Quindi perché scrivi IDENTITY che si usa con SQL Server?

    Con Access (ovvero con un file mdb, accdb) devi usare AUTOINCREMENT

    Non so cosa tu stia facemdo (provi con SQL Server e poi scrivi per Access?) ma gli errori sono chiari.
  • OK già è qualcosa, purtroppo sto cercando un po di documentazione in merito ma sono molto confuso, facevo in questo modo (sbagliando) ma funzionava, poi messo sul form che mi occorre non va.
    quindi il problema è nel campo ID oltre ad autonumber cos'altro sbaglio? perchè ovviamente se lo sostituisco a IDENTITY non funziona è ovvio...
  • Scusa ... cosa non funziona ancora?
  • Da comunque di errore sintassi in CREATE TABLE
Devi accedere o registrarti per scrivere nel forum
36 risposte