Ciao a tutti,
sono nuovo in questo forum e spero di non aver già sbagliato sessione![]()
Qualcuno può aiutarmi a creare un database .mdb direttamente da codice?
grazie in anticipo
(Uso visual basic 2008 express edition)
Ciao a tutti,
sono nuovo in questo forum e spero di non aver già sbagliato sessione![]()
Qualcuno può aiutarmi a creare un database .mdb direttamente da codice?
grazie in anticipo
(Uso visual basic 2008 express edition)
Devi usare ADOX, ovvero l'estensione di ADO.
http://www.codeguru.com/vb/gen/vb_da...icle.php/c5149
Ti consiglio di scaricarti il SDK di ADO 2.8, dove troverai una guida dettagliata con esempi di codice.
Microsoft Data Access Components (MDAC) 2.8 Software Development Kit
http://www.microsoft.com/downloads/d...DisplayLang=en
per ulteriori ricerche:
http://lmgtfy.com/?q=how+to+make+mdb+database+vb+2008
![]()
solo un'informazione...
io sto creando un archivio con, ovviamente, un database per l'archiviazione dati.
Ogni volta che parte il programma quest'ultimo controlla se esiste il database (salvato in C:\database.mdb): nel caso in cui non lo trovasse allora lo ricrea...(usando ADOX)
Questo programma serve a mio padre su un altro pc...
se sposto l'eseguibile su un altro pc, funziona ugualmente???
ps: non mi funziona
ho scaricato il Microsoft ADO Ext. 2.7 for DDL and Security ma quando vado su Service References > Add Reference. non me lo trova =S
E' scritto tutto nell'articolo (primo link) devi leggere bene!
grazie 1000
non avevo letto una parte...(non chiedermi il perchè)
comunque. ora ho riscontrato un errore che non riesco a risolvere:
Creato il database, mi connetto a quest'ultimo...e funziona
quando creo le tabelle mi da errore in Cat.Tables.Append(objTable)
Qui il codice:
Cat = New ADOX.Catalog
Dim Cn As ADODB.Connection
Dim objTable As ADOX.Table
Cn = New ADODB.Connection
objTable = New ADOX.Table
Cn.Open(New"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataPatch & ";Jet OLEDBatabase Password=" & DataPassw)
Cat.ActiveConnection = Cn
objTable.Name = "Profile"
objTable.Columns.Append("PrimaryKey_Field", DataTypeEnum.adChar)
Cat.Tables.Append(objTable) < ERRORE ComException non è stata gestita .Tipo non valido
objTable = Nothing
Cat = Nothing
Cn.Close()
Cn = Nothing
Infatti adChar non mi pare sia un tipo valido per il database Access.
Vado a memoria: dovrebbe essere adVarWChar .
Fai attenzione, devi studiarti bene i tipi di dati di Access, ogni tipo di database (Acces, Oracle, SQL Server, ecc..) può gestire tipi di dati diversi a volte specifici solo per quel determinato database.
Per potersi interfacciare con tutti i tipi di database, ADOX li contempla tutti, ma sei tu che devi sapere quali usare.
Questo può aiutarti:
Progettino di esempio su ADO-ADOX
http://www.visual-basic.it/areadownload.asp?key=ADOX
(solo utenti registrati possono scaricare).
![]()
grazie 1000
risolto ancora...
ihih
ho finito il form di aggiunta dati,
eliminazione dati
e riordino dati![]()
ora però non capisco perchè mi ritorna questo errore quando modifico una pratica tramite il bottone "modifica":
Generazione SQL dinamica per UpdateCommand non supportata per un SelectCommand che non restituisce informazioni di colonne chiave.
Qui il codice:
Private Sub EditButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EditButton.Click
If (PraticaField.Text = "") Then
MsgBox("Attenzione: il nome della pratica deve essere specificato", MsgBoxStyle.Information)
Return
End If
Dim Cn As New OleDb.OleDbConnection
Cn.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & DataPatch & ";Jet OLEDBatabase Password=" & DataPassw
Cn.Open()
'Edit Data
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
sql = "SELECT * FROM Archive WHERE Gnr_Pratica='" + OldVar + "'"
da = New OleDb.OleDbDataAdapter(sql, Cn)
da.Fill(ds, "Edit")
ds.Tables("Edit").Rows(0).Item("Gnr_Pratica") = PraticaField.Text
ds.Tables("Edit").Rows(0).Item("Gnr_Committente") = CommittenteField.Text
ds.Tables("Edit").Rows(0).Item("Gnr_Indirizzo") = IndirizzoField.Text
ds.Tables("Edit").Rows(0).Item("Gnr_Comune") = ComuneField.Text
ds.Tables("Edit").Rows(0).Item("Gnr_Recapito1") = Recapito1Field.Text
ds.Tables("Edit").Rows(0).Item("Gnr_Recapito2") = Recapito2Field.Text
Dim cb As New OleDb.OleDbCommandBuilder(da)
da.Update(ds, "Edit") < ERRORE
MsgBox("Pratica Modificata!", MsgBoxStyle.Information)
Cn.Close()
Me.Close()
End Sub
Se non indichi QUALE riga genera l'errore...![]()
Tra l'altro, spiega cosa c'entra questa riga
con il resto del codice ???codice:Dim cb As New OleDb.OleDbCommandBuilder(da)
Non mi sembra usato da nessuna parte...
![]()
l'errore lo genera qua:
da.Update(ds, "Edit")
il fatto è che non capisco come va fatto l'update...
secondo una guida bisogna introdurre un OleDb.OleDbCommandBuilder ma non saprei dove metterlo...
![]()
Il problema sta nel fatto che per costruire le query di aggiornamento ed eliminazione dei record con un CommandBuilder:
devi specificare, nella tabella del Db, una colonna con chiave primaria ..... altrimenti il commandbuilder non riesce, ovviamente, a costruire le query di Update e Delete in quanto gli manca l'indice di ricerca del Record.codice:Dim cb As New OleDb.OleDbCommandBuilder(da)
Qualora avessi problemi a definire una colonna come chiave primaria (dico io) potresti comunque sempre pensare di costruirti a mnina le query di Update e Delete.
Aggiungo anche che, questa riga di codice:
deve essere scritta prima dell'esecuzione del metodo Fill del DataAdapter, altrimenti, non serve a nulla.codice:Dim cb As New OleDb.OleDbCommandBuilder(da)
Facci sapere....
Ciao