2017-04-05 10 views
0

..私はページを実行しようとすると、このエラーメッセージを取得しておくパラメータ化クエリ

パラメータ化クエリ '(@Medicationのデータ型はnvarchar(14)、@数量はnvarchar(9)、RequestedDate @ N'供給されなかったパラメータ「@RequestedDate」を、期待し

この

は私の分離コードファイルです。

Dim conn As SqlConnection 
Dim cmd As SqlCommand 

'Getting today's date to store into database to let staff know when prescription was ordered 
'reference for this code : - https://msdn.microsoft.com/en-us/library/system.datetime.today(v=vs.110).aspx 

Dim thisDay As DateTime = DateTime.Today 
Session("DateRequested") = (thisDay.ToString()) 
Dim Medication As String 
Dim Quantity As String 
Dim RequestedDate As String 
Dim Pharmacy As String 
Dim PatientNumber As String 

Medication = txtDrug1.Text + " " + txtDrug2.Text + " " + txtDrug3.Text + " " + txtDrug4.Text + " " + txtDrug5.Text 
Quantity = txtQuant1.Text + " " + txtQuant2.Text + " " + txtQuant3.Text + " " + txtQuant4.Text + " " + txtQuant5.Text 

RequestedDate = Session("Date Requested") 
PatientNumber = Session("PatientNumber") 
Pharmacy = txtPharmacy.Text 

Dim cmdstring As String = "INSERT INTO Prescription (Medication, QntyandStrength, RequestedDate, Pharmacy, PatientNumber) Values (@Medication, @Quantity, @RequestedDate, @Pharmacy, @PatientNumber)" 

conn = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\User\Documents\Visual Studio 2015\WebSites\myAppointments\App_Data\Database.mdf;Integrated Security=True") 
cmd = New SqlCommand(cmdstring, conn) 

cmd.Parameters.AddWithValue("@Medication", Medication) 
cmd.Parameters.AddWithValue("@Quantity", Quantity) 
cmd.Parameters.AddWithValue("@RequestedDate", RequestedDate) 
cmd.Parameters.AddWithValue("@Pharmacy", Pharmacy) 
cmd.Parameters.AddWithValue("@PatientNumber", PatientNumber) 

conn.Open() 

cmd.ExecuteNonQuery() 
conn.Close() 

MsgBox("Your Prescription Has Been Requested!") 

とデータベースの種類は次のとおりです。

[PrescriptionNumber] INT   NOT NULL, 
[Medication]   NVARCHAR(250) NULL, 
[QntyandStrength] NVARCHAR(250) NULL, 
[RequestedDate]  NVARCHAR(70) NULL, 
[Pharmacy]   VARCHAR (50) NULL, 
[PatientNumber]  CHAR (10) NULL, 

これを変更する方法についてのアドバイスはありますか?

+4

なぜ日付を文字列として保存していますか? –

+0

'.AddWithValue'の代わりに' .Add'を使用してください – Bugs

+0

'RequestedDate = Session(" Requested ")'この行で 'RequestedDate'が' Nothing'の代わりに_actual_の値を持っていることは確かですか? – Cameron

答えて

0

Chris Dunawayが指摘しているように、セッション変数への参照が正しくありません。あなたは、パラメータを渡す際、だから... ...

RequestedDate = Session("Date Requested") ''This variable name has a space. 

Session("DateRequested") = (thisDay.ToString()) 

...しかし、あなたは別の名前でそれを参照してください。

あなたは変数を宣言し、値を代入します...

cmd.Parameters.AddWithValue("@RequestedDate", RequestedDate) 

...ヌルオブジェクトへの参照を渡しています。セッションはありません( "Date Requested")。

+0

皆さん、私の愚かな目で間違いありませんでした。セッションにはスペースがありました。 –

関連する問題