gandert
09/07/07, 15:36
Beste,
Ik heb al redelijk wat insert formulieren gemaakt in asp.net (visual basics) om zo gegevens in te vullen in mijn ACCESS database.
Tot nu toe heb ik vooral gewerkt met gewone Text (Varchar) gegevens.
Nu had ik graag een Valuta tekst invullen maar ik krijg steeds de foutcode:
Failed to convert parameter value from a String to a Decimal.
Hieronder geef ik je het stukje code die ik denk die moet aangepast worden:
objCmd.Parameters.Add("@bedrag", OleDbType.Numeric)
objCmd.Parameters("@bedrag").Value = bedrag.Text
Hieronder een werkende text varchar type:
objCmd.Parameters.Add("@beschrijving", OleDbType.VarChar)
objCmd.Parameters("@beschrijving").Value = beschrijving.Text
Zal ook mijn complete code even doorgeven (deze is wel redelijk lang):
Imports System.Data
Imports System.Data.OleDb
Partial Class uitvoer
Inherits System.Web.UI.Page
Dim strCn, strSql As String
Dim intId, intFKid As Integer
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
strCn = ConfigurationManager.ConnectionStrings("vervaet").ConnectionString
' ##
strCn = ConfigurationManager.ConnectionStrings("vervaet").ConnectionString
If IsToegelaten(User.Identity.Name) = False Then
' De gebruuiker mag deze pagina niet zien
'lblBoodschap.Text = "fout"
' of
Response.Redirect("Default.aspx")
' Else
' ' De gebruiker mag deze pagina wel zien
' lblBoodschap.Text = "Goed"
End If
' ###
' Indien een bestaand record opgevraagd wordt zullen de gegevens uit de DB
' gehaald en getoont worden.
If Not Page.IsPostBack Then
If Request.QueryString("id") <> "" Then
' Er werd een id doorgegeven
intId = CType(Request.QueryString("id"), Integer)
id.Text = intId.ToString
If Not Page.IsPostBack Then
uitvoerenById(intId)
End If
End If
End If
intFKid = CType(Request.QueryString("FKid"), Integer)
FKid.Text = intFKid
End Sub
' ###
Private Function IsToegelaten(ByVal Username As String) As Boolean
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
strSql = "SELECT * FROM users Where Username = @Username AND admin = True;"
Dim objCmd As New Data.OleDb.OleDbCommand(strSql, objCn)
Dim objDa As New Data.OleDb.OleDbDataAdapter(objCmd)
Dim objDs As New Data.DataSet
objCmd.Parameters.Add("@Username", Data.OleDb.OleDbType.VarChar, 15)
objCmd.Parameters("@Username").Value = Username
objDa.Fill(objDs, "users")
If objDs.Tables("users").Rows.Count >= 1 Then
' rechten toegestaan
Return True
Else
' rechten niet toegestaan
Return False
End If
End Function
' ###
Protected Sub bewaar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bewaar.Click
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
If id.Text <> "" Then
' Bestaand record => update
strSql = "UPDATE uitvoeren SET stand = @stand, " _
& "FKid = @FKid, " _
& "beschrijving = @beschrijving, " _
& "datum = @datum, " _
& "bedrag = @bedrag, " _
& "uitvoerdatum = @uitvoerdatum, " _
& "commissie = @commissie, " _
& "verkoopdatum = @verkoopdatum, " _
& "verkoper = @verkoper, " _
& "uitvoer = @uitvoer " _
& "WHERE id = @id; "
Else
' Nieuw record => Insert
strSql = "INSERT INTO uitvoeren(stand, FKid, beschrijving, datum, bedrag, uitvoerdatum, commissie, verkoopdatum, verkoper, uitvoer) " _
& "VALUES(@stand,@FKid,@beschrijving,@datum,@bedrag,@ uitvoerdatum,@commissie,@verkoopdatum,@verkoper,@u itvoer);"
End If
Dim objCmd As New System.Data.OleDb.OleDbCommand(strSql, objCn)
objCmd.Parameters.Clear()
objCmd.Parameters.Add("@stand", OleDbType.VarChar)
objCmd.Parameters("@stand").Value = stand.Text
objCmd.Parameters.Add("@FKid", OleDbType.Integer)
objCmd.Parameters("@FKid").Value = CType(FKid.Text, Integer)
objCmd.Parameters.Add("@beschrijving", OleDbType.VarChar)
objCmd.Parameters("@beschrijving").Value = beschrijving.Text
objCmd.Parameters.Add("@datum", OleDbType.Date)
If (Me.DatePickerDatum.IsNull) Then
objCmd.Parameters("@datum").Value = System.DBNull.Value
Else
objCmd.Parameters("@datum").Value = Me.DatePickerDatum.SelectedDate
End If
objCmd.Parameters.Add("@bedrag", OleDbType.Numeric)
objCmd.Parameters("@bedrag").Value = bedrag.Text
objCmd.Parameters.Add("@uitvoerdatum", OleDbType.Date)
If (Me.DatePickerUitvoerdatum.IsNull) Then
objCmd.Parameters("@uitvoerdatum").Value = System.DBNull.Value
Else
objCmd.Parameters("@uitvoerdatum").Value = Me.DatePickerUitvoerdatum.SelectedDate
End If
objCmd.Parameters.Add("@commissie", OleDbType.Numeric)
objCmd.Parameters("@commissie").Value = commissie.Text
objCmd.Parameters.Add("@verkoopdatum", OleDbType.Date)
If (Me.DatePickerVerkoopdatum.IsNull) Then
objCmd.Parameters("@verkoopdatum").Value = System.DBNull.Value
Else
objCmd.Parameters("@verkoopdatum").Value = Me.DatePickerVerkoopdatum.SelectedDate
End If
objCmd.Parameters.Add("@verkoper", OleDbType.VarChar)
objCmd.Parameters("@verkoper").Value = verkoper.Text
objCmd.Parameters.Add("@uitvoer", OleDbType.VarChar)
objCmd.Parameters("@uitvoer").Value = uitvoer.Text
If ID.Text <> "" Then
' parameter voor id aanmaken
objCmd.Parameters.Add("@id", OleDbType.Integer)
objCmd.Parameters("@id").Value = CType(ID.Text, Integer)
End If
Try
objCmd.ExecuteNonQuery()
Catch ex As Exception
boodschap.ForeColor = Drawing.Color.Red
boodschap.Text = "Er trad een fout op bij het bewaren van de gegevens.<br />" & ex.Message
Exit Sub
Finally
If objCn.State = Data.ConnectionState.Open Then
objCn.Close()
End If
End Try
' Indioen nodig de nieuwe id ophalen voor verdere verwerking
If ID.Text = "" Then
ID.Text = GetHighestId().ToString
AccessDataSourceAfspraak.DataBind()
GridView1.DataBind()
End If
If FKid.Text = "" Then
FKid.Text = intFKid
AccessDataSourceAfspraak.DataBind()
GridView1.DataBind()
End If
boodschap.ForeColor = Drawing.Color.Green
boodschap.Text = "De gegevens zijn bewaard."
End Sub
Private Function GetHighestId() As Integer
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
strSql = "SELECT MAX(AFid) AS Hoogste FROM uitvoeren;"
Dim objCmd As New OleDbCommand(strSql, objCn)
Dim objDa As New OleDbDataAdapter(objCmd)
Dim objDs As New Data.DataSet
objDa.Fill(objDs, "max")
If objCn.State = Data.ConnectionState.Open Then
objCn.Close()
End If
If objDs.Tables("max").Rows.Count <> 0 Then
Return objDs.Tables("max").Rows(0).Item("Hoogste")
Else
Return -1
End If
End Function
Private Sub uitvoerenById(ByVal intLocalId As Integer)
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
strSql = "SELECT * FROM uitvoeren WHERE id = @id;"
Dim objCmd As New OleDbCommand(strSql, objCn)
objCmd.Parameters.Add("@id", OleDbType.Integer)
objCmd.Parameters("@id").Value = intLocalId
Dim objDa As New OleDbDataAdapter(objCmd)
Dim objDs As New Data.DataSet
objDa.Fill(objDs, "uitvoeren")
If objCn.State = Data.ConnectionState.Open Then
objCn.Close()
End If
' Plaats de gegevens van het prospectrecord in de tekstvakken
If objDs.Tables("uitvoeren").Rows.Count > 0 Then
id.Text = objDs.Tables("uitvoeren").Rows(0).Item("id").ToString
stand.Text = objDs.Tables("uitvoeren").Rows(0).Item("stand").ToString
FKid.Text = objDs.Tables("uitvoeren").Rows(0).Item("FKid").ToString
beschrijving.Text = objDs.Tables("uitvoeren").Rows(0).Item("beschrijving").ToString
DatePickerDatum.SelectedValue = objDs.Tables("uitvoeren").Rows(0).Item("datum")
bedrag.Text = objDs.Tables("uitvoeren").Rows(0).Item("bedrag").Decimal
DatePickerUitvoerdatum.SelectedValue = objDs.Tables("uitvoeren").Rows(0).Item("uitvoerdatum")
commissie.Text = objDs.Tables("uitvoeren").Rows(0).Item("commissie").Decimal
DatePickerVerkoopdatum.SelectedValue = objDs.Tables("uitvoeren").Rows(0).Item("verkoopdatum")
verkoper.Text = objDs.Tables("uitvoeren").Rows(0).Item("verkoper").ToString
uitvoer.Text = objDs.Tables("uitvoeren").Rows(0).Item("uitvoer").ToString
Else
boodschap.ForeColor = Drawing.Color.Red
boodschap.Text = "De gevraagde gegevens werden niet gevonden."
End If
End Sub
Protected Sub verwijder_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles verwijder.Click
intId = CType(id.Text, Integer)
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
strSql = "DELETE FROM uitvoeren WHERE id = @id;"
Dim objCmd As New System.Data.OleDb.OleDbCommand(strSql, objCn)
objCmd.Parameters.Clear()
' parameter voor id aanmaken
objCmd.Parameters.Add("@id", OleDbType.Integer)
objCmd.Parameters("@id").Value = intId
Try
objCmd.ExecuteNonQuery()
Catch ex As Exception
boodschap.ForeColor = Drawing.Color.Red
boodschap.Text = "Er trad een fout op bij het verwijderen van de gegevens.<br />" & ex.Message
Exit Sub
Finally
If objCn.State = Data.ConnectionState.Open Then
objCn.Close()
End If
End Try
Response.Redirect("Default.aspx")
End Sub
Protected Sub nieuw_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles nieuw.Click
'Response.Redirect("afspraak.aspx")
' Formulier in status voor nieuwe ingave brengen
id.Text = ""
stand.text = ""
FKid.Text = intFKid
beschrijving.Text = ""
DatePickerDatum.SelectedValue = ""
bedrag.Text = ""
DatePickerUitvoerdatum.SelectedValue = ""
commissie.Text = ""
DatePickerVerkoopdatum.SelectedValue = ""
verkoper.Text = ""
uitvoer.Text = ""
End Sub
End Class
Gelieve me te helpen want op google vind ik niets.
mvg
Gandert
Ik heb al redelijk wat insert formulieren gemaakt in asp.net (visual basics) om zo gegevens in te vullen in mijn ACCESS database.
Tot nu toe heb ik vooral gewerkt met gewone Text (Varchar) gegevens.
Nu had ik graag een Valuta tekst invullen maar ik krijg steeds de foutcode:
Failed to convert parameter value from a String to a Decimal.
Hieronder geef ik je het stukje code die ik denk die moet aangepast worden:
objCmd.Parameters.Add("@bedrag", OleDbType.Numeric)
objCmd.Parameters("@bedrag").Value = bedrag.Text
Hieronder een werkende text varchar type:
objCmd.Parameters.Add("@beschrijving", OleDbType.VarChar)
objCmd.Parameters("@beschrijving").Value = beschrijving.Text
Zal ook mijn complete code even doorgeven (deze is wel redelijk lang):
Imports System.Data
Imports System.Data.OleDb
Partial Class uitvoer
Inherits System.Web.UI.Page
Dim strCn, strSql As String
Dim intId, intFKid As Integer
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
strCn = ConfigurationManager.ConnectionStrings("vervaet").ConnectionString
' ##
strCn = ConfigurationManager.ConnectionStrings("vervaet").ConnectionString
If IsToegelaten(User.Identity.Name) = False Then
' De gebruuiker mag deze pagina niet zien
'lblBoodschap.Text = "fout"
' of
Response.Redirect("Default.aspx")
' Else
' ' De gebruiker mag deze pagina wel zien
' lblBoodschap.Text = "Goed"
End If
' ###
' Indien een bestaand record opgevraagd wordt zullen de gegevens uit de DB
' gehaald en getoont worden.
If Not Page.IsPostBack Then
If Request.QueryString("id") <> "" Then
' Er werd een id doorgegeven
intId = CType(Request.QueryString("id"), Integer)
id.Text = intId.ToString
If Not Page.IsPostBack Then
uitvoerenById(intId)
End If
End If
End If
intFKid = CType(Request.QueryString("FKid"), Integer)
FKid.Text = intFKid
End Sub
' ###
Private Function IsToegelaten(ByVal Username As String) As Boolean
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
strSql = "SELECT * FROM users Where Username = @Username AND admin = True;"
Dim objCmd As New Data.OleDb.OleDbCommand(strSql, objCn)
Dim objDa As New Data.OleDb.OleDbDataAdapter(objCmd)
Dim objDs As New Data.DataSet
objCmd.Parameters.Add("@Username", Data.OleDb.OleDbType.VarChar, 15)
objCmd.Parameters("@Username").Value = Username
objDa.Fill(objDs, "users")
If objDs.Tables("users").Rows.Count >= 1 Then
' rechten toegestaan
Return True
Else
' rechten niet toegestaan
Return False
End If
End Function
' ###
Protected Sub bewaar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bewaar.Click
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
If id.Text <> "" Then
' Bestaand record => update
strSql = "UPDATE uitvoeren SET stand = @stand, " _
& "FKid = @FKid, " _
& "beschrijving = @beschrijving, " _
& "datum = @datum, " _
& "bedrag = @bedrag, " _
& "uitvoerdatum = @uitvoerdatum, " _
& "commissie = @commissie, " _
& "verkoopdatum = @verkoopdatum, " _
& "verkoper = @verkoper, " _
& "uitvoer = @uitvoer " _
& "WHERE id = @id; "
Else
' Nieuw record => Insert
strSql = "INSERT INTO uitvoeren(stand, FKid, beschrijving, datum, bedrag, uitvoerdatum, commissie, verkoopdatum, verkoper, uitvoer) " _
& "VALUES(@stand,@FKid,@beschrijving,@datum,@bedrag,@ uitvoerdatum,@commissie,@verkoopdatum,@verkoper,@u itvoer);"
End If
Dim objCmd As New System.Data.OleDb.OleDbCommand(strSql, objCn)
objCmd.Parameters.Clear()
objCmd.Parameters.Add("@stand", OleDbType.VarChar)
objCmd.Parameters("@stand").Value = stand.Text
objCmd.Parameters.Add("@FKid", OleDbType.Integer)
objCmd.Parameters("@FKid").Value = CType(FKid.Text, Integer)
objCmd.Parameters.Add("@beschrijving", OleDbType.VarChar)
objCmd.Parameters("@beschrijving").Value = beschrijving.Text
objCmd.Parameters.Add("@datum", OleDbType.Date)
If (Me.DatePickerDatum.IsNull) Then
objCmd.Parameters("@datum").Value = System.DBNull.Value
Else
objCmd.Parameters("@datum").Value = Me.DatePickerDatum.SelectedDate
End If
objCmd.Parameters.Add("@bedrag", OleDbType.Numeric)
objCmd.Parameters("@bedrag").Value = bedrag.Text
objCmd.Parameters.Add("@uitvoerdatum", OleDbType.Date)
If (Me.DatePickerUitvoerdatum.IsNull) Then
objCmd.Parameters("@uitvoerdatum").Value = System.DBNull.Value
Else
objCmd.Parameters("@uitvoerdatum").Value = Me.DatePickerUitvoerdatum.SelectedDate
End If
objCmd.Parameters.Add("@commissie", OleDbType.Numeric)
objCmd.Parameters("@commissie").Value = commissie.Text
objCmd.Parameters.Add("@verkoopdatum", OleDbType.Date)
If (Me.DatePickerVerkoopdatum.IsNull) Then
objCmd.Parameters("@verkoopdatum").Value = System.DBNull.Value
Else
objCmd.Parameters("@verkoopdatum").Value = Me.DatePickerVerkoopdatum.SelectedDate
End If
objCmd.Parameters.Add("@verkoper", OleDbType.VarChar)
objCmd.Parameters("@verkoper").Value = verkoper.Text
objCmd.Parameters.Add("@uitvoer", OleDbType.VarChar)
objCmd.Parameters("@uitvoer").Value = uitvoer.Text
If ID.Text <> "" Then
' parameter voor id aanmaken
objCmd.Parameters.Add("@id", OleDbType.Integer)
objCmd.Parameters("@id").Value = CType(ID.Text, Integer)
End If
Try
objCmd.ExecuteNonQuery()
Catch ex As Exception
boodschap.ForeColor = Drawing.Color.Red
boodschap.Text = "Er trad een fout op bij het bewaren van de gegevens.<br />" & ex.Message
Exit Sub
Finally
If objCn.State = Data.ConnectionState.Open Then
objCn.Close()
End If
End Try
' Indioen nodig de nieuwe id ophalen voor verdere verwerking
If ID.Text = "" Then
ID.Text = GetHighestId().ToString
AccessDataSourceAfspraak.DataBind()
GridView1.DataBind()
End If
If FKid.Text = "" Then
FKid.Text = intFKid
AccessDataSourceAfspraak.DataBind()
GridView1.DataBind()
End If
boodschap.ForeColor = Drawing.Color.Green
boodschap.Text = "De gegevens zijn bewaard."
End Sub
Private Function GetHighestId() As Integer
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
strSql = "SELECT MAX(AFid) AS Hoogste FROM uitvoeren;"
Dim objCmd As New OleDbCommand(strSql, objCn)
Dim objDa As New OleDbDataAdapter(objCmd)
Dim objDs As New Data.DataSet
objDa.Fill(objDs, "max")
If objCn.State = Data.ConnectionState.Open Then
objCn.Close()
End If
If objDs.Tables("max").Rows.Count <> 0 Then
Return objDs.Tables("max").Rows(0).Item("Hoogste")
Else
Return -1
End If
End Function
Private Sub uitvoerenById(ByVal intLocalId As Integer)
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
strSql = "SELECT * FROM uitvoeren WHERE id = @id;"
Dim objCmd As New OleDbCommand(strSql, objCn)
objCmd.Parameters.Add("@id", OleDbType.Integer)
objCmd.Parameters("@id").Value = intLocalId
Dim objDa As New OleDbDataAdapter(objCmd)
Dim objDs As New Data.DataSet
objDa.Fill(objDs, "uitvoeren")
If objCn.State = Data.ConnectionState.Open Then
objCn.Close()
End If
' Plaats de gegevens van het prospectrecord in de tekstvakken
If objDs.Tables("uitvoeren").Rows.Count > 0 Then
id.Text = objDs.Tables("uitvoeren").Rows(0).Item("id").ToString
stand.Text = objDs.Tables("uitvoeren").Rows(0).Item("stand").ToString
FKid.Text = objDs.Tables("uitvoeren").Rows(0).Item("FKid").ToString
beschrijving.Text = objDs.Tables("uitvoeren").Rows(0).Item("beschrijving").ToString
DatePickerDatum.SelectedValue = objDs.Tables("uitvoeren").Rows(0).Item("datum")
bedrag.Text = objDs.Tables("uitvoeren").Rows(0).Item("bedrag").Decimal
DatePickerUitvoerdatum.SelectedValue = objDs.Tables("uitvoeren").Rows(0).Item("uitvoerdatum")
commissie.Text = objDs.Tables("uitvoeren").Rows(0).Item("commissie").Decimal
DatePickerVerkoopdatum.SelectedValue = objDs.Tables("uitvoeren").Rows(0).Item("verkoopdatum")
verkoper.Text = objDs.Tables("uitvoeren").Rows(0).Item("verkoper").ToString
uitvoer.Text = objDs.Tables("uitvoeren").Rows(0).Item("uitvoer").ToString
Else
boodschap.ForeColor = Drawing.Color.Red
boodschap.Text = "De gevraagde gegevens werden niet gevonden."
End If
End Sub
Protected Sub verwijder_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles verwijder.Click
intId = CType(id.Text, Integer)
Dim objCn As New System.Data.OleDb.OleDbConnection(strCn)
objCn.Open()
strSql = "DELETE FROM uitvoeren WHERE id = @id;"
Dim objCmd As New System.Data.OleDb.OleDbCommand(strSql, objCn)
objCmd.Parameters.Clear()
' parameter voor id aanmaken
objCmd.Parameters.Add("@id", OleDbType.Integer)
objCmd.Parameters("@id").Value = intId
Try
objCmd.ExecuteNonQuery()
Catch ex As Exception
boodschap.ForeColor = Drawing.Color.Red
boodschap.Text = "Er trad een fout op bij het verwijderen van de gegevens.<br />" & ex.Message
Exit Sub
Finally
If objCn.State = Data.ConnectionState.Open Then
objCn.Close()
End If
End Try
Response.Redirect("Default.aspx")
End Sub
Protected Sub nieuw_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles nieuw.Click
'Response.Redirect("afspraak.aspx")
' Formulier in status voor nieuwe ingave brengen
id.Text = ""
stand.text = ""
FKid.Text = intFKid
beschrijving.Text = ""
DatePickerDatum.SelectedValue = ""
bedrag.Text = ""
DatePickerUitvoerdatum.SelectedValue = ""
commissie.Text = ""
DatePickerVerkoopdatum.SelectedValue = ""
verkoper.Text = ""
uitvoer.Text = ""
End Sub
End Class
Gelieve me te helpen want op google vind ik niets.
mvg
Gandert