Hallo zusammen,
ich habe meine CD-Informationen in einem Audio-Archiv organisert, was bisher als Excel-Tabelle vorlag. Jetzt möchte ich das ganze als DB organisieren und habe mir eine Acess-Datenbank erstellt, auf die ich mit VB2005 Express zugreifen will. Mit meinen bescheidenen Programmiererfahrungen stoße ich jetzt allerdings an Grenzen. Im Moment versuche ich den Import hinzubekommen und scheitere hier beim Eintragen in die DB mit der Fehlermeldung "Parameter @Cover hat keinen Standardwert".
Hier die relevanten Code-Ausschnitte:
Dim insSql As String = "INSERT into DISCS (ArtistID, DiscNr, DiscTitle," & _
"DiscYear, " & _
"DiscLength, Genre1ID, Bonus, Video, DiscType, DiscYear2, Copy," & _
"Preis, Wert, " & _
"Cover, MP3, country, TOC, Note1) " & _
"VALUES (@ArtistID, @DiscNr, @DiscTitle, @DiscYear, " & _
"@DiscLength, @Genre1ID, @Bonus, @Video, @DiscType, @DiscYear2," & _
"@Copy, @Preis, " & _
"@Wert, @Cover, @MP3, @country, @TOC, @Note1)"
Dim insCmd As New OleDbCommand(insSql, con)
...
'Parameter für DISCS zurücksetzen und anschließend neu füllen
With insCmd.Parameters
.Clear()
.Add("@ArtistID", OleDbType.Integer, 10).Value = iArtist
.Add("@DiscNr", OleDbType.Integer, 10).Value = CInt(convertToNum( _
sField(6)))
.Add("@DiscTitle", OleDbType.VarChar, 100).Value = sField(2)
.Add("@DiscYear", OleDbType.SmallInt, 5).Value = CInt(convertToNum( _
sField(7)))
.Add("@DiscLength", OleDbType.DBTime).Value = dTimeCD
.Add("@Genre1ID", OleDbType.Integer, 10).Value = iGenre
.Add("@Bonus", OleDbType.Boolean).Value = bBonus
.Add("@Video", OleDbType.Boolean).Value = bCopy
.Add("@DiscType", OleDbType.Integer, 10).Value = iType
.Add("@DiscYear2", OleDbType.SmallInt, 5).Value = CInt(convertToNum( _
sField(8)))
.Add("@Copy", OleDbType.Boolean).Value = bVideo
.Add("@Preis", OleDbType.Single, 7).Value = CSng(convertToNum( _
sField(14)))
.Add("@Wert", OleDbType.Single, 7).Value = CSng(convertToNum(sField( _
16)))
.Add("@Cover", OleDbType.VarChar, 255).Value = sField(15)
.Add("@MP3", OleDbType.VarChar, 255).Value = sField(17)
.Add("@country", OleDbType.VarChar, 10).Value = sField(12)
.Add("@TOC", OleDbType.VarChar, 255).Value = sField(0)
.Add("@Note1", OleDbType.VarChar, 255).Value = sField(10)
End With
'in DISCS eintragen
Try
con.Open()
insCmd.ExecuteNonQuery()
con.Close()
Catch ex As Exception
If MsgBox(ex.Message & vbCrLf & vbCrLf & "Import abbrechen?", _
MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then _
con.Close() : importData = False : Exit Function
con.Close()
End Try Auch das explizite Setzen von parameter.isNullable =True hat nichts gebracht.
Für das zugehörige Feld in der DB ist die Eingabe von Null-Werten zulässig.
Kann mir jemand einen Tip geben, woran das liegen kann?
Danke im Vorraus für Eure Tips,
Steffan |