Archief - [PROG]Visual Studio 2005 problemen met "INSERT statement" met een MS Access database

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Anoniem07

Legacy Member
Hej. Ik ben een programma aan het schrijven dat werkt met een MS Acces database.
info database:
---------------
Aantal tabellen :4
1. "VinylTabel"
2. "ArtiestTabel"
3. "LabelTabel"
4. "GenreTabel"
Joins : 1
namenlijk tussen VinylTabel en ArtiestTabel
In de VinylTabel is er een kolom "ArtiestID" genaamd. En hier wordt de primaire sleutel (integer dus) ingevuld vanuit de ArtiestTabel van gewenste record.


Situatie:
----------
Als ik records wil toevoegen in één van de Laatste 3 tabellen. Dan lukt het met deze code.

Code:
Dim cb As New OleDb.OleDbCommandBuilder(Adap(1))
Dim NewRow As DataRow
NewRow = DS.Tables("ArtiestTabel").NewRow
NewRow.Item(1) = TP3TXTLabel.Text
DS.Tables("ArtiestTabel").Rows.Add(NewRow)
Adap(1).Update(DS, "ArtiestTabel")

Nu wil ik in mijn hoodtabel een record invoege in "VinylTabel" dus.

Code:
Dim CB As New OleDb.OleDbCommandBuilder(Adap(0))
Dim Row As DataRow
Row = DS.Tables("VinylTabel").NewRow
Row(1) = mem
Row(2) = TXTTitel.Text
Row(3) = CBLabel.Text
Row(4) = CBGenre.Text
Row(5) = TXTDiscogs.Text
Row(6) = TXTRelease.Text
Row(7) = TXTCatalog.Text
DS.Tables("VinylTabel").Rows.Add(Row)
Adap(0).Update(DS, "VinylTabel")

probleem:
---------
Nu geeft hij altijd een fout bij deze laatste regel
Code:
Adap(0).Update(DS, "VinylTabel")
Mijn INSERT INTO statement zou niet kloppen of aanwezig zijn.
En dat blijkt dan ook zo te zijn in debug mode. Maar de vraag is waarom hij deze fout niet geeft bij andere tabellen waar ik een record in voeg.

Weet iemand hoe het komt dat ik dit probleem enkel bij de 1ste tabel ervaar.
Een oplossing is het SQL statement zelf instellen. ik weet niet hoe je dat exact moet doen, maar dat kan ik op google vinden. Maar hetgeen dat me bezighoud is waarom ik enkel bij deze tabel die fout heb, en bij mijn andere tabellen niet.

En mijn Data Adapters zijn juist hetzelfde ingesteld, maar wel naar juiste tabelnaam.



----------------------------------------------------bijlage-------------------------------------------------
DS = dataset
adap(3) = array van dataadapters
Code:
Con.ConnectionString() = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = " & OpenFileDialog.FileName
path = OD.FileName
SQLstr(0) = "SELECT * FROM VinylTabel"
SQLstr(1) = "SELECT * FROM ArtiestTabel"
SQLstr(2) = "SELECT * FROM LabelTabel"
SQLstr(3) = "SELECT * FROM GenreTabel"
Adap(0) = New OleDb.OleDbDataAdapter(SQLstr(0), Con)
Adap(1) = New OleDb.OleDbDataAdapter(SQLstr(1), Con)
Adap(2) = New OleDb.OleDbDataAdapter(SQLstr(2), Con)
Adap(3) = New OleDb.OleDbDataAdapter(SQLstr(3), Con)
Con.Open()
Adap(0).Fill(DS, "VinylTabel")
Adap(1).Fill(DS, "ArtiestTabel")
Adap(2).Fill(DS, "LabelTabel")
Adap(3).Fill(DS, "GenreTabel")
Con.Close()

Deadly-By-Sight

Legacy Member
Code:
Public Class db
    Private dbconnection As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Resources\Database\db.mdb")
    Public Sub New()
        dbconnection.Open()
    End Sub
    Public Function db_select(ByVal sql As String) As ArrayList
        Dim dbcommand As New OleDb.OleDbCommand
        Dim dbreader As OleDb.OleDbDataReader

        Dim return_arraylist As New ArrayList

        With dbcommand
            .CommandText = sql
            .Connection = dbconnection
        End With
        dbreader = dbcommand.ExecuteReader

        While dbreader.Read()
            Dim temp(dbreader.FieldCount) As String
            For i As Integer = 0 To dbreader.FieldCount - 1
                temp(i) = dbreader.Item(i)
                'MsgBox("Element temp(" & i & ") = " & temp(i))
            Next
            return_arraylist.Add(temp)
        End While
        Return return_arraylist
    End Function
End Class

Hiermee doe ik het altijd.
Insert statement gelijkaardig.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan