เกิด Error ตรงคำสั่ง Sql ครับ เกิด Error ตรงคำสั่ง Sql ครับ คือผมต้องการเลือกข้อมูลที่มี วันที่ Exp_date - 2 เดือน
มันไม่ต้องมี rowaffected = มารับครับ
มันก็เลยฟ้องว่าไม่ถูก เพราะมันผูกกับ Dataset d_set แล้วครับ เวลาเรียกก็ใช้ d_set ครับ
Date :
2010-02-03 13:06:16
By :
artorigin7
ขอบคุณครับคุณ art เเต่ก็ยัง Error อยู่อะครับ
ที่ผมเข้าในนะ ผมว่ามันน่าจะ Error ตรงคำสั่ง Sql อะครับ
อันนี้ที่เเก้เเล้วนะครับ
Code (VB.NET)
d_adap = New SqlDataAdapter("Select DATEADD(MONTH, -2, Exp_date = '" & DateTime.Now.Year.ToString() & "/" & DateTime.Now.Month.ToString() & "/" & DateTime.Now.Day.ToString() & "')" & _
"from Vaccine", sqlConnection)
d_adap.Fill(d_set, "Vaccine")
เเต่ที่คิดว่าติด Errro ก็น่าจะเป็นตรงนี้อะครับ
Code (VB.NET)
Exp_date = '" & DateTime.Now.Year.ToString()
Date :
2010-02-03 14:06:30
By :
artcode
"Select DATEADD(MONTH, -2, Exp_date = '" & DateTime.Now.Year.ToString() & "/" & DateTime.Now.Month.ToString() & "/" & DateTime.Now.Day.ToString() & "')
SQL Method DATEADD(ปี หรือ เดือน หรือวัน ที่จะเพิ่ม, จำนวนที่จะเพิ่ม, Datetime)
คุณไปใส่ '=' ไม่ได้
คุณต้องใส่ ค่า datetime ไปเลย เช่น '2010-01-05'
Date :
2010-02-03 14:23:04
By :
numenoy
ตามที่พี่ numenoy เเนะนำนะครับ คือ ผมขอถามต่อว่าเเล้วถ้าเราต้องการเลือกวันที่ Exp_date -2 เดือน ที่ตรงกับวันที่ปัจจุบันหละครับ
จะทำยังไงครับ รบกวนด้วนนะครับพี่
ตามที่พี่ art ตอบมาเดี๋ยวขอไปลองดูก่อนนะครับ
ขอบคุณพี่ทั้ง 2 ท่านมากครับ
Date :
2010-02-03 15:22:55
By :
artcode
Select DATEADD(MONTH, -2, GETDATE())
คุณ ก็จะได้วันที่ปัจจุบันที่ลดไป 2 เดือน แล้วคุณก็ลองเอาไปเปรียบเทียบดูครับว่าอันไหนมันตรงบ้าง
Date :
2010-02-03 17:18:08
By :
numenoy
ครับพี่ numenoy ผมได้ตามที่พี่บอกเรียบร้อยเเล้วครับ
เเล้วก็เอาข้อมูลที่ได้ยัดลง Data Set ตอนนี้ก็ทำการเปรียบเทียบค่าใน Data Set ครับเเต่กลับเปรียบเทียบไม่ได้
เซ็งเลยครับทำความเข้าใจจนพอเข้าใจในระดับนึงเเล้วเเต่ยังไม่ได้ รบกวนพี่ numenoy ดู Code ให้ผมทีครับพี่
ตามกระทู้นี้ครับ https://www.thaicreate.com/dotnet/forum/038264.html
หรือ Code นี้ครับ
Code (VB.NET)
Dim d_adap As SqlDataAdapter
Dim d_set As DataSet = New DataSet
d_adap = New SqlDataAdapter("Select DATEADD(MONTH, -2, Exp_date)" & _
"from Vaccine", sqlConnection)
d_adap.Fill(d_set, "Vaccine")
DataGridView2.DataSource = d_set.Tables("Vaccine")
Dim i As Integer
For i = 0 To d_set.Tables("Vaccine").Rows.Count - 1
If d_set.Tables("Vaccine").Rows(i).ToString = Date.Now.ToString("MM/dd/yyyy") Then
MessageBox.Show("มีวัคซีนหมดอายุวันนี้", "Warning !!", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
Next
Date :
2010-02-03 20:19:14
By :
artcode
d_set.Tables("Vaccine").Rows(i).ToString = Date.Now.ToString("MM/dd/yyyy")
ครับ ผมดูแล้ว น่าจะเป็นตรงนี้
data column หายไปไหนครับ คุณ เอา data row มาแปลงเลยมันก็ไม่ได้ดิครับ
d_set.Tables("Vaccine").Rows(i)("column อะไรที่เก็บวันที่ไว้ครับ") .ToString
อีกอย่างหนึ่ง คุณแปลงเป็น datetime ดีกว่า คุณแปลงเป็น string เดี๋ยว format ไม่ตรงกันอีก เปรียบเทียบไม่ได้ ตัวอย่าง เช่น
d_set.Tables("Vaccine").Rows(i)("column อะไร").ToString = Date.Now.ToString("MM/dd/yyyy")
"2010-02-03" มันก็ไม่เท่ากับ "02/03/2010" อีก เพราะแปลงเป็น string คนละ format กัน
ลองดูครับ
Date :
2010-02-04 09:37:51
By :
numenoy
ทำได้เรียบร้อยเเล้วครับ ไปนั่งอ่านบทความเก่าๆที่เคยเก็บเรื่อง DataSet ไว้ครับเลยเข้าใจว่าต้องมี Column มาด้วย
ตามที่พี่ numenoy ชี้เเนะเลยครับ เเต่พอมาเขียนเพิ่มส่วน Column เข้าไป อ้าวไม่ได้ซะงั้น
พอมาอ่านที่พี่ numenoy บอกว่าให้แปลงเป็น Date Time ถึงได้เข้าใจ เพราะเข้าใจว่าแปลงเป็น String โดยกำหนดรูปแบบเอง
มันจะเหมือนกันตลอดในรูปแบบ ("MM/dd/yyyy") ทำให้รู้ว่าผมเข้าใจผิดมาตลอดเลย
สุดท้ายก็ทำได้ตามคำเเนะนำพี่ numenoy ขอบคุณมากๆครับ เข้าใจเพิ่มขึ้น
เเละเอาไปใช้ได้จริงครับ
Date :
2010-02-04 14:35:12
By :
artcode
Load balance : Server 03