webForumDet fria alternativet

Problem med att uppdatera min databas

.NETur .NET

2 svar · 377 visningar · startad av corona

Medlem sedan feb. 200470 inlägg
Frågan#1

Hej!
Jag ny på asp.net och jag har nu problem att uppdatera en tabell i en access databas.
Det jag inte förstår är varför det inte går. Får hela tiden felmeddelandet "Record can not update". Någon som kan se vad som spökar eller tipsa vad jag ska göra ... då blir jag jätteglad!
Att lägga till och visa ... inga problem men att uppdatera ... ;-(

//Annette

Imports System.Data
Imports System.Data.OleDb

Partial Public Class redigera_ny
    Inherits System.Web.UI.Page
    Dim objConn As New OleDb.OleDbConnection
    Dim objCmd As New OleDb.OleDbCommand
    Dim dtReader As OleDb.OleDbDataReader
    Dim strConnString, strSQL As String

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/App_Data/kurser.mdb") & ";Jet OLEDB:Database Password=;"
        objConn.ConnectionString = strConnString
        objConn.Open()

        If Not Page.IsPostBack() Then
            ViewData()
        End If
    End Sub

    Sub ViewData()
        '*** DataTable ***'
        Dim dtAdapter As OleDb.OleDbDataAdapter
        Dim dt As New DataTable
        strSQL = "SELECT * FROM Kursinfoblad WHERE ID = " & Request.QueryString("ID") & " "
        dtAdapter = New OleDb.OleDbDataAdapter(strSQL, objConn)
        dtAdapter.Fill(dt)

        If dt.Rows.Count > 0 Then
            Me.strRubrik.Text = dt.Rows(0)("Rubrik")
            Me.strKursNr.Text = dt.Rows(0)("KursNr")
            Me.strKursLangd.Text = dt.Rows(0)("KursLangd")
            Me.strMalgrupp.Text = dt.Rows(0)("Malgrupp")
            Me.strKursansvarig.Text = dt.Rows(0)("Kursansvarig")
            Me.strKursadmin.Text = dt.Rows(0)("Kursadmin")
            Me.strPris.Text = dt.Rows(0)("Pris")
            Me.strMal.Text = dt.Rows(0)("Mal")
            Me.strInnehall.Text = dt.Rows(0)("Innehall")
            Me.strBeskrivning.Text = dt.Rows(0)("Beskrivning")
        End If
    End Sub

    Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs)

        strSQL = "UPDATE Kursinfoblad SET " & _
        " Rubrik = '" & Me.strRubrik.Text & "' " & _
        " ,KursNr = '" & Me.strKursNr.Text & "' " & _
        " ,KursLangd = '" & Me.strKursLangd.Text & "' " & _
        " ,Malgrupp = '" & Me.strMalgrupp.Text & "' " & _
        " ,Kursansvarig = '" & Me.strKursansvarig.Text & "' " & _
        " ,Kursadmin = '" & Me.strKursadmin.Text & "' " & _
        " ,Kursadmin = '" & Me.strKursadmin.Text & "' " & _
        " ,Pris = '" & Me.strPris.Text & "' " & _
        " ,Mal = '" & Me.strMal.Text & "' " & _
        " ,Innehall = '" & Me.strInnehall.Text & "' " & _
        " ,Beskrivning = '" & Me.strBeskrivning.Text & "' " & _
        " WHERE ID = '" & Request.QueryString("ID") & "' "
        'Response.Write(strSQL)

        objCmd = New OleDb.OleDbCommand
        With objCmd
            .Connection = objConn
            .CommandText = strSQL
            .CommandType = CommandType.Text
        End With

        Me.pnlAdd.Visible = False
        Try
            objCmd.ExecuteNonQuery()
            Me.lblStatus.Text = "Record Updated"
            Me.lblStatus.Visible = True
        Catch ex As Exception
            Me.lblStatus.Text = "Record can not update"
        End Try

    End Sub

    Sub Page_UnLoad()
        objConn.Close()
        objConn = Nothing
    End Sub

End Class
Medlem sedan dec. 2004736 inlägg
#2

En gissning är att ta bort ' runt Request.QueryString("ID"):

" WHERE ID = " & Request.QueryString("ID")

Ett bra tips här är att inte fånga (Catch ex As Exception) när du har problem, för då kommer .NET berätta för dig exakt vad som är fel. Annars kan du alltid skriva ut ex.Message, då Message innehåller felmeddelandet, som talar om för dig vad som är fel.

Medlem sedan feb. 200470 inlägg
#3

Stort tack!
Det var två fel ....
Det första var dubbletterna" ,Kursadmin = '" & Me.strKursadmin.Text & "' " & _
" ,Kursadmin = '" & Me.strKursadmin.Text & "' " & _
och sedan var det som du gissade på nämligen Request.QueryString("ID"). Bort med enkelfnuttar ... vola ... sedan gick det galant!
Och så har jag nu lärt mig använda ex.Message - super!!
//Annette

135 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)