2017-03-05 5 views
-1

Probleme mit dem Skalarvariablenproblem. Die Ausgabe, die besagt, dass der Code die skalierbare fname-Variable benötigt, wird deklariert. Code unten angezeigt. Jede Hilfe wird sehr geschätzt.Probleme mit der Skalarvariablen

Dim conn As SqlConnection 
Dim cmd As SqlCommand 

Dim fname As String = firstname.Text 
Dim strSurname As String = surname.Text 
Dim strAddress As String = address.Text 
Dim strGraveType As String 

Dim GraveNo1 As String 
Dim GraveNo2 As String 
Dim GraveNo3 As String 

Dim filename As String 
Dim photoFilePath As String 

If Not radSingle.Checked Or radDouble.Checked Or radTreble.Checked Then 
    MsgBox("Please Select a Grave Type") 
ElseIf radSingle.Checked Then 
    strGraveType = "Single" 
ElseIf radDouble.Checked Then 
    strGraveType = "Double" 
ElseIf radTreble.Checked Then 
    strGraveType = "Treble" 
End If 

GraveNo1 = txtGraveNo1.Text 
GraveNo2 = txtGraveNo2.Text 
GraveNo3 = txtGraveNo3.Text 


If GravePhotoUpload.HasFile Then 
    If GravePhotoUpload.PostedFile.ContentType = "image/jpeg" Then 

     Try 
      filename = Path.GetFileName(GravePhotoUpload.FileName) 
      GravePhotoUpload.SaveAs(Server.MapPath("../Images/") + filename) 
      photoFilePath = "Images/" + filename 
     Catch ex As Exception 
      MsgBox("ERROR - The file could not be uploaded. The following error occured: " + ex.Message) 

     End Try 
    Else 
     MsgBox("Please upload a JPG File Format") 
    End If 
End If 

Dim cmdstring As String = "INSERT INTO DeathRecords(FirstName, Surname, Address, GraveType, GraveNo1, GraveNo2, GraveNo3, GravePhoto) Values (@Fname, @strSurname, @strAddress, @strGraveType, @GraveNo1, @GraveNo1, @GraveNo3, @photoFilePath)" 

conn = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DrumcreeCemetery.mdf;Integrated Security=True") 
cmd = New SqlCommand(cmdstring, conn) 

cmd.Parameters.AddWithValue("@FirstName", fname) 
cmd.Parameters.AddWithValue("@Surname", strSurname) 
cmd.Parameters.AddWithValue("@Address", strAddress) 
cmd.Parameters.AddWithValue("@GraveType", strGraveType) 
cmd.Parameters.AddWithValue("@GraveNo1", GraveNo1) 
cmd.Parameters.AddWithValue("@GraveNo2", GraveNo2) 
cmd.Parameters.AddWithValue("@GraveNo3", GraveNo3) 
cmd.Parameters.AddWithValue("@GravePhoto", photoFilePath) 

Try 
    conn.Open() 
    cmd.ExecuteNonQuery() 
    conn.Close() 
Catch ex As Exception 
    MsgBox(ex.Message) 
End Try 
+1

Lesen Sie Ihre Abfrage - Sie haben dort '@ Fname' verwendet, aber verwenden Sie' @ FirstName' für den Parameter – Plutonix

Antwort

0

Die in der Abfrage definierten Parameter:

Dim cmdstring As String = "INSERT INTO DeathRecords(FirstName, Surname, Address, GraveType, GraveNo1, GraveNo2, GraveNo3, GravePhoto) Values (@Fname, @strSurname, @strAddress, @strGraveType, @GraveNo1, @GraveNo1, @GraveNo3, @photoFilePath)" 

Entsprechen die Parameter nicht auf dem Befehl setzen:

cmd.Parameters.AddWithValue("@FirstName", fname) 
cmd.Parameters.AddWithValue("@Surname", strSurname) 
cmd.Parameters.AddWithValue("@Address", strAddress) 
cmd.Parameters.AddWithValue("@GraveType", strGraveType) 
cmd.Parameters.AddWithValue("@GraveNo1", GraveNo1) 
cmd.Parameters.AddWithValue("@GraveNo2", GraveNo2) 
cmd.Parameters.AddWithValue("@GraveNo3", GraveNo3) 
cmd.Parameters.AddWithValue("@GravePhoto", photoFilePath) 

Zum Beispiel Ihre Anfrage hat @Fname für Vorname , aber Sie geben stattdessen @FirstName für den FirstName-Parameter an. Das Gleiche gilt für die meisten anderen Variablen. Wenn die angegebenen Parameternamen im Befehl nicht mit den Parameternamen in der Abfrage übereinstimmen, kann der Befehl die angegebenen Parameter nicht mit dem verknüpfen, was die Abfrage erwartet, und daher den Fehler, den Sie erhalten.