 |
|
|
 |
 |
|
แล้วจะนำค่ามาใส่ textbox ยังไงครับ?
|
 |
 |
 |
 |
Date :
2010-03-29 09:30:14 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช้ sql command ของคุณวินนั่นแหละ executescalar ออกมา
แปลงเป็น integer มาใส่ตัวแปร จะแสดงที่ textbox ก็แปลงเป็น string แล้วใส่ใน property text ของ textbox
มีในบทความหมดแหละ ไปหาอ่านเอาก่อนง่ายๆ
|
 |
 |
 |
 |
Date :
2010-03-29 09:50:41 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมลองหาค่ามากที่ได้แล้ว และถ้าต้องการ +1 ไม่ทราบว่าต้องเพิ่มในส่วนไหนครับ
Code (VB.NET)
Private Sub frmchances_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ts_save.Enabled = False
ts_cancel.Enabled = False
Dim fd As New fader
fd.FadeIn(Me, 0.25)
sw.Reset()
sw.Start()
E_readsonly()
lbl_idchance.BackColor = Color.FromArgb(0, 0, 0, 0)
lbl_namechance.BackColor = Color.FromArgb(0, 0, 0, 0)
strConn = DBConnString.strConn
Conn = New OleDbConnection()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
sb.Append("SELECT MAX(id_chance) As maxid FROM tbchance")
Dim sqlmx_id As String
sqlmx_id = sb.ToString()
Com = New OleDbCommand()
Dim dr As OleDbDataReader
With Com
.CommandText = sqlmx_id
.CommandType = CommandType.Text
.Connection = Conn
dr = .ExecuteReader()
While dr.Read
txt_idchance.Text = CStr((dr.Item("maxid")))
End While
End With
showdata()
formatdgvchance()
sw.Stop()
processtime = sw.ElapsedMilliseconds / 1000
_toolstriplabel.Text = "เวลาที่ใช้ : " & processtime.ToString("0.0000") & " วินาที"
End Sub
|
 |
 |
 |
 |
Date :
2010-03-29 10:56:09 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SELECT MAX(id_chance)+1 As maxid FROM tbchance
เพิ่มใน SQL เลย ง่ายดี
|
 |
 |
 |
 |
Date :
2010-03-29 11:18:41 |
By :
zongpr |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าในตารางไม่มีข้อมูล
มัน orrer บรรทัดที่ 37 ครับ
**** ผมอยากให้ถ้าไม่มีข้อมูล ให้เป็น 1 อ่ะครับ
Code (VB.NET)
Private Sub frmchances_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ts_save.Enabled = False
ts_cancel.Enabled = False
Dim fd As New fader
fd.FadeIn(Me, 0.25)
sw.Reset()
sw.Start()
E_readsonly()
lbl_idchance.BackColor = Color.FromArgb(0, 0, 0, 0)
lbl_namechance.BackColor = Color.FromArgb(0, 0, 0, 0)
strConn = DBConnString.strConn
Conn = New OleDbConnection()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
sb.Append("SELECT MAX(id_chance)+1 As maxid FROM tbchance")
Dim sqlmx_id As String
sqlmx_id = sb.ToString()
Com = New OleDbCommand()
Dim dr As OleDbDataReader
With Com
.CommandText = sqlmx_id
.CommandType = CommandType.Text
.Connection = Conn
dr = .ExecuteReader()
While dr.Read
txt_idchance.Text = CStr((dr.Item("maxid")))
End While
End With
showdata()
formatdgvchance()
sw.Stop()
processtime = sw.ElapsedMilliseconds / 1000
_toolstriplabel.Text = "เวลาที่ใช้ : " & processtime.ToString("0.0000") & " วินาที"
End Sub
|
 |
 |
 |
 |
Date :
2010-03-29 15:38:45 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ก็บอกให้ใช้ executescalar ไง ไม่มีข้อมูลจะได้เท่ากับ 0
|
 |
 |
 |
 |
Date :
2010-03-29 15:48:55 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำยังไงครับ
|
 |
 |
 |
 |
Date :
2010-03-29 16:10:23 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
'Dim dr As OleDbDataReader
With Com
.CommandText = sqlmx_id
.CommandType = CommandType.Text
.Connection = Conn
'dr = .ExecuteReader()
'While dr.Read
'txt_idchance.Text = CStr((dr.Item("maxid")))
'End While
End With
Dim Result As Integer = CInt(Com.ExecuteScalar())
|
 |
 |
 |
 |
Date :
2010-03-29 16:35:25 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SELECT IIF((COUNT([id_chance])=0),1,MAX([id_chance])+1) As [maxid] FROM [tbchance]
ความหมายของ IIF((COUNT([id_chance])=0),1,MAX([id_chance])) คือ
ตรวจสอบว่า (COUNT([id_chance])=0) >> นับ Record ของ field [id_chance] ถ้าไม่มีข้อมูลจะมีค่าเป็น 0
ถ้ามีข้อมูลก็จะเท่ากับจำนวน record ค่ะ
IIF เป็นการตรวจสอบเงื่อนถ้า Record count จากข้างต้นเป็น 0 จะให้ค่า 1
แต่ถ้าไม่ใช่ 0 จะให้ค่า MAX([id_chance])+1 ค่ะ
ส่วนการใช้ EXECUTESCALAR ในบอร์ดนี้ยกตัวอย่างมาหลายครั้งแล้ว ลองค้นหาดูนะคะ
กำโพสพร้อมๆกับพี่ตึ๋งเลย
|
 |
 |
 |
 |
Date :
2010-03-29 16:37:54 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ได้อ่ะครับ
|
 |
 |
 |
 |
Date :
2010-03-29 16:39:50 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ไม่ได้อ่ะ ลองทั้ง 2 วิธีล่ะครับ ไม่ได้อ่ะ
|
 |
 |
 |
 |
Date :
2010-03-29 16:48:09 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำไมไม่ได้ละคะ ไม่ได้ตรงไหน เมื่อไหร่ ยังไง
|
 |
 |
 |
 |
Date :
2010-03-29 17:11:37 |
By :
blurEye |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
หัด debug ด้วยก็ดีนะครับ ผมว่าคงใช้ visual studio มันง่ายออก จิ้มๆ ตรงที่จะ debug แล้ว run แล้ว f10 f11 ก็ว่ากันไป สงสัยตรงไหน เอาเมาส์ชี้
ลองดูนะ
|
 |
 |
 |
 |
Date :
2010-03-29 18:11:24 |
By :
plakrim |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มัน error บรรทัดที่ 35 อ่ะครับ
Code (VB.NET)
Private Sub ts_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_add.Click
ActionFlag = "ADD"
'ClearAllData()
Conn = New OleDbConnection()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Dim sb1 As New StringBuilder
'sb1.Append("SELECT MAX(id_chance)+1 As maxid FROM tbchance")
sb1.Append("SELECT IF((COUNT([id_chance])=0),1,MAX([id_chance])+1) As maxid FROM [tbchance]")
Dim sqlmx_id As String
sqlmx_id = sb1.ToString()
Com = New OleDbCommand()
Dim dr1 As OleDbDataReader
With Com
.CommandText = sqlmx_id
.CommandType = CommandType.Text
.Connection = Conn
dr1 = .ExecuteReader()
While dr1.Read
txt_idchance.Text = CStr((dr1.Item("maxid")))
End While
End With
txt_idchance.ReadOnly = True
txt_namechance.ReadOnly = False
ts_add.Enabled = False
ts_edit.Enabled = False
ts_save.Enabled = True
ts_cancel.Enabled = True
ts_del.Enabled = False
txt_namechance.Focus()
End Sub
ถ้าใช้โค้ดนี้ มันจะ error บรรทัดที่ 13
Code (VB.NET)
'Dim dr As OleDbDataReader
With Com
.CommandText = sqlmx_id
.CommandType = CommandType.Text
.Connection = Conn
'dr = .ExecuteReader()
'While dr.Read
'txt_idchance.Text = CStr((dr.Item("maxid")))
'End While
End With
Dim Result As Integer = CInt(Com.ExecuteScalar())
|
 |
 |
 |
 |
Date :
2010-03-30 08:28:59 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Private Sub ts_add_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_add.Click
ActionFlag = "ADD"
'ClearAllData()
Conn = New OleDbConnection()
With Conn
If .State = ConnectionState.Open Then .Close()
.ConnectionString = strConn
.Open()
End With
Dim sb1 As New StringBuilder
'sb1.Append("SELECT MAX(id_chance)+1 As maxid FROM tbchance")
sb1.Append("SELECT IF((COUNT([id_chance])=0),1,MAX([id_chance])+1) As maxid FROM [tbchance]")
Dim sqlmx_id As String
sqlmx_id = sb1.ToString()
Com = New OleDbCommand()
Dim dr1 As OleDbDataReader
With Com
.CommandText = sqlmx_id
.CommandType = CommandType.Text
.Connection = Conn
dr1 = .ExecuteReader()
While dr1.Read
txt_idchance.Text = CStr((dr1.Item("maxid")))
End While
End With
txt_idchance.ReadOnly = True
txt_namechance.ReadOnly = False
ts_add.Enabled = False
ts_edit.Enabled = False <<< access control ข้าม thread ไม่ได้ครับ คุณต้องใช้ event-delegate
ts_save.Enabled = True
ts_cancel.Enabled = True
ts_del.Enabled = False
txt_namechance.Focus()
End Sub
Code (VB.NET)
'Dim dr As OleDbDataReader
With Com
.CommandText = sqlmx_id
.CommandType = CommandType.Text
.Connection = Conn
'dr = .ExecuteReader()
'While dr.Read
'txt_idchance.Text = CStr((dr.Item("maxid")))
'End While
End With
Dim Result As Integer = CInt(Com.ExecuteScalar())
<<< เป็นไปได้ สองแบบ คือ
เขียนใหม่แบบ ถ้ามันฟ้อง error น่ะ
Dim Result As Integer
Result = CInt(Com.ExecuteScalar())
กับ
command เป็น select command คุณต้องเอา data adapter มารับครับ ExecuteScalar ไม่ถูกต้องนัก
เวลาโพสข้อความ เอา error มาแป๊ะด้วยจะดีกว่าครับ จะเข้าใจง่ายกว่านี้ แล้วอยากให้คุณหัดใช้ breakpoint - debug ให้มากๆ สังเกตและจดจำรูปแบบที่ถูกต้องไปเยอะๆ แล้วคุณจะเก่งเอง
|
 |
 |
 |
 |
Date :
2010-03-30 08:50:27 |
By :
numenoy |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
งง ครับ ช่วยอธิบายหน่อย
|
 |
 |
 |
 |
Date :
2010-03-30 09:02:37 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โจทย์นี้ง่ายนะ ไม่รู้ทำไมทำไม่ได้ เลยสดให้เลยเพราะไม่ได้ลง vb ไว้
Code (VB.NET)
Private Sub frmchances_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ts_save.Enabled = False
ts_cancel.Enabled = False
Dim fd As New fader
fd.FadeIn(Me, 0.25)
sw.Reset()
sw.Start()
E_readsonly()
lbl_idchance.BackColor = Color.FromArgb(0, 0, 0, 0)
lbl_namechance.BackColor = Color.FromArgb(0, 0, 0, 0)
strConn = DBConnString.strConn
Conn = New OleDbConnection(strConn)
If Conn.State = ConnectionState.Open Then
Conn.Close()
End If
strCom As String = "SELECT MAX([id_chance]) As [maxid] FROM [tbchance]"
Com = New OleDbCommand(strCom, Conn)
Try
Conn.Open()
Dim Result As Integer = CInt(Com.ExecuteScalar())
Conn.Close()
txt_idchance.Text = Convert.ToString(Result + 1)
Catch ex As Exception
txt_idchance.Text = ex.Meaasge
End Try
showdata()
formatdgvchance()
sw.Stop()
processtime = sw.ElapsedMilliseconds / 1000
_toolstriplabel.Text = "เวลาที่ใช้ : " & processtime.ToString("0.0000") & " วินาที"
End Sub
|
 |
 |
 |
 |
Date :
2010-03-30 09:38:20 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันเข้าบรรทัดนี้
txt_idchance.Text = ex.Meaasge
ตลอดเลยอ่ะครับ?
|
 |
 |
 |
 |
Date :
2010-03-30 09:47:12 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แล้วมันเขียนว่าไงล่ะครับ
เพราะนั่นก็คือสิ่งที่ error มันบอกว่าอะไรก็แก้ตามนั้น
|
 |
 |
 |
 |
Date :
2010-03-30 10:06:26 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วครับ คุณ tungman
ขอบคุณมากกับคำแนะนำ พอดีผมพึ่งลองเขียนได้ไม่กี่วันเอง
ผมก็พบมีหนังสือน่ะครับ แต่ไม่มีเกี่ยวกับที่ผมกำลังทำ
|
 |
 |
 |
 |
Date :
2010-03-30 10:49:44 |
By :
oasiis |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|