Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > .NET Framework > Forum > [.NET]Error ตรง "Conversion from type 'DBNull' to type 'integer' is not valid." แก้ยังไงดีครับ



 

[.NET]Error ตรง "Conversion from type 'DBNull' to type 'integer' is not valid." แก้ยังไงดีครับ

 



Topic : 129280



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์




รบกวนผู้เชี่ยวชาญช่วยดูหน่อยครับ พอดีผมทำฟอร์มนี้ขึ้นมาแล้วก่อนหน้านี้ยังใช้งานได้ปกติ รันปกติไม่มีเออเร่อ แต่พอช่วงต้นเดือนที่ผ่านมามาเช็คอีกทีกลับขึ้นเออเร่อตามหัวข้อเลยครับ แล้วพอผมลองดักค่าว่าง IsDBNull แล้วรันได้แต่ว่าในฐานข้อมูลมันไม่มีการหักค่า ColorInShop ที่ถูกทำการเบิกออกไป เหมือนค่านี้มันเป็นค่า 0 อะครับ พอจะมีวิธีแก้ไหมครับ ผมติดอยู่ตรงเออเร่อนี้มา 2 อาทิตย์ได้แล้วยังแก้ไม่ได้เลยครับ

ช่วงบรรทัดที่ 69-77 ที่เป็นปัญหาครับ

Code (VB.NET)
    Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSave.Click
        If txtEmployeeID.Text = "" Then
            MessageBox.Show("กรุณาระบุรหัสพนักงาน !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
            txtEmployeeID.Focus()
            Exit Sub
        End If

        If lsvPrintColorList.Items.Count = 0 Then
            MessageBox.Show("กรุณาป้อนรายการเบิกหมึกพิมพ์ !!!", "ผลการตรวจสอบ", MessageBoxButtons.OK, MessageBoxIcon.Information)
            txtPrintCLID.Focus()
            Exit Sub
        End If

        Dim sqlDisclose As String = ""
        Dim comDisclose As OleDbCommand = New OleDbCommand

        With Conn
            If .State = ConnectionState.Open Then .Close()
            .ConnectionString = strConn
            .Open()
        End With

        Try
            If MessageBox.Show("คุณต้องการบันทึกรายการเบิกหมึกพิมพ์ ใช่หรือไม่?", "คำยืนยัน", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then

                AutoGenerateTranID()

                sqlDisclose = "INSERT INTO Disclose (TransID,EmployeeID) "
                sqlDisclose &= " VALUES('" & LastTransID & "',"
                sqlDisclose &= "'" & txtEmployeeID.Text & "')"

                With comDisclose
                    .CommandType = CommandType.Text
                    .CommandText = sqlDisclose
                    .Connection = Conn
                    .ExecuteNonQuery()
                End With

                Dim i As Integer = 0
                Dim tmpPrintCLID As String = ""

                Dim sqlPrintColor As String = ""
                Dim tmpColorInShop As Integer = 0
                Dim tmpColorInDisclose As Integer = 0

                Dim tmpDiscloseNum As Integer = 0
                Dim tmpDate_Disclose As Date


                tmpDate_Disclose = Date.Now

                For i = 0 To lsvPrintColorList.Items.Count - 1
                    sqlDisclose = "INSERT INTO DiscloseDetail(TransID,PrintCLID,Date_Disclose,DiscloseNum)"
                    sqlDisclose &= " VALUES('" & LastTransID & "',"

                    tmpPrintCLID = lsvPrintColorList.Items(i).SubItems(0).Text

                    tmpDiscloseNum = CInt(lsvPrintColorList.Items(i).SubItems(2).Text)

                    sqlDisclose &= "'" & tmpPrintCLID & "',"
                    sqlDisclose &= "'" & tmpDate_Disclose & "',"
                    sqlDisclose &= tmpDiscloseNum & ")"

                    With comDisclose
                        .CommandText = sqlDisclose
                        .ExecuteNonQuery()
                    End With

                    sqlPrintColor = "SELECT PrintCLID,ColorInShop,ColorInDisclose FROM PrintColor"
                    sqlPrintColor &= " WHERE (PrintCLID='" & tmpPrintCLID & "')"

                    da.SelectCommand.CommandText = sqlPrintColor
                    da.Fill(ds, "PrintColor")

                    tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop"))
                    tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose"))
                    ds.Tables("PrintColor").Clear()

                    sqlDisclose = "UPDATE PrintColor"
                    sqlDisclose &= " SET ColorInShop=" & tmpColorInShop - tmpDiscloseNum & ","
                    sqlDisclose &= " ColorInDisclose=" & tmpColorInDisclose + tmpDiscloseNum
                    sqlDisclose &= " WHERE (PrintCLID='" & tmpPrintCLID & "')"

                    With comDisclose
                        .CommandText = sqlDisclose
                        .ExecuteNonQuery()
                    End With
                Next


                MessageBox.Show("บันทึกรายการเบิกหมึกพิมพ์เรียบร้อยแล้ว !!!", "ผลการทำงาน", MessageBoxButtons.OK, MessageBoxIcon.Information)


                ClearAllCustomerData()
                ClearAllPrintColorData()
                lsvPrintColorList.Items.Clear()


                cboDepartment.SelectedIndex = 0
                txtEmployeeID.Enabled = True
                txtEmployeeID.Focus()
            End If

        Catch ErrProcess As Exception
            MessageBox.Show("ไม่สามารถบันทึกรายการเบิกหมึกพิมพ์ได้ เนื่องจาก " & ErrProcess.Message, "ข้อผิดพลาด", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End Try
    End Sub




Tag : .NET, Ms Access, Win (Windows App), VB.NET









ประวัติการแก้ไข
2017-10-19 15:11:55
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-10-19 15:11:05 By : ford24832 View : 3269 Reply : 56
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Error นี้ไม่มีอะไรซับซ้อครับ แค่ค่ามัน Null เลยทำการ Convert ไม่ได้ครับ ฉะนั้นควรจะเช็คค่า Null ก่อนจะ Convert ครับ หรือไม่สร้งเป็น Function แล้วเรียกเอาดีกว่าครับ จะได้แก้ที่ Function ได้เลย






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 09:45:16 By : mr.win
 


 

No. 2



โพสกระทู้ ( 317 )
บทความ ( 0 )



สถานะออฟไลน์


วิธีแก้นะครับ แก้ตอนคุณ Query มาครับ ผมไม่รู็ว่าคอลัมไหนที่เป็น NULL นะครับ ผมจำลองว่าเป็น ColorInDisclose ละกัน


SELECT PrintCLID,ColorInShop,ISNULL(ColorInDisclose,0) ColorInDisclose FROM PrintColor
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 10:20:31 By : OOP
 

 

No. 3



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2017-10-20 09:45:16
รายละเอียดของการตอบ ::
ค่า Null ตอนนี้มีสองค่าครับ คือค่า ColorInShop กับ ColorInDisclose แต่มันจะ Convert ยังไงหรอครับ ผมยังมือใหม่เลยทำอะไรไม่ค่อยเป็น
แต่เมื่อสักครู่ผมลองดัก DbNull ไปแล้วลองรันซึ่งผมเซ็ตให้มีหมึกอยู่ 9 ชิ้น รอบแรกผมลองป้อนข้อมูลให้เบิกหมึก 3 ชิ้น และรอบที่ 2 ป้อนข้อมูลเบิก 2 ชิ้นแล้วกลับมาเช็คในฐานข้อมูล มันกลายเป็นว่า ค่าของ ColorInShop กับ ColorInDisclose มันเป็น -2 กับ 2 อะครับ แทนที่มันจะเป็น 4 กับ 5



ประวัติการแก้ไข
2017-10-20 11:54:24
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 11:50:34 By : ford24832
 


 

No. 4



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : OOP เมื่อวันที่ 2017-10-20 10:20:31
รายละเอียดของการตอบ ::
มันขึ้น Syntax Error(missing operator) in query expression 'ISNULL(ColorInDisclose,0) ColorInDisclose'. อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 12:01:03 By : ford24832
 


 

No. 5



โพสกระทู้ ( 317 )
บทความ ( 0 )



สถานะออฟไลน์


ฐานข้อมูลอะไรครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 13:24:40 By : OOP
 


 

No. 6



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : OOP เมื่อวันที่ 2017-10-20 13:24:40
รายละเอียดของการตอบ ::
Access ครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-20 14:01:07 By : ford24832
 


 

No. 7



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ไม่เคยใช้ access แฮะ ลองแก้ตั้งแต่แรกเริ่มเดิมทีดูครับเซ็ตให้ field นั้น not null แล้วใส่ default เป็น 0 ดู

แล้วก็มีวิธีถึกกว่านั้น โดยใช้ ds.Tables("PrintColor").Contains("ColorInShop") เอาไปเช็ค if ครับ ถ้า true ก็เขียนแบบเดิม แต่ถ้า false ก็ assign 0 ให้ได้เลย เป็นวิธีเขียนแบบถึกๆ ที่ป้องกัน nullable ได้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-22 03:16:11 By : PlaKriM
 


 

No. 8



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ลองแบบนี้ดูนะครับ

1.ดีบักเพื่อดูค่า tmpColorInShop
2.ดีบักเพื่อดูค่า tmpDiscloseNum
3.ดีบักเพื่อดูค่า tmpColorInDisclose

ดูว่าก่อน Update ค่าที่ได้เป็นเท่าไหร่นะครับ

ถ้าไม่ตรงกับที่ต้องการ ให้ย้อน โค้ดขึ้นไปอีก ว่า ต้นเหตุมาจากไหนครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-22 07:42:12 By : Dr.K
 


 

No. 9



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 7 เขียนโดย : PlaKriM เมื่อวันที่ 2017-10-22 03:16:11
รายละเอียดของการตอบ ::
ใน access ไม่น่ามีให้เซ็ต fieldให้เป็น not null อะครับ
ส่วนใช้โค้ดที่แนะนำมาก็ไม่ได้อะครับ มันขึ้นว่า 'Contains' is not member of 'System.Data.DataTable'


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-24 08:35:06 By : ford24832
 


 

No. 10



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : Dr.K เมื่อวันที่ 2017-10-22 07:42:12
รายละเอียดของการตอบ ::
DiscloseNum = 5 ครับเพราะผมป้อนเบิกหมึก 5 ชิ้น
ColorInShop = -5
ColorInDisclose = 5
อันนี้ผมลองใช้ IsDBNull ดักครับจึงดีบัคค่าออกมาได้

ต้นเหตุน่าจะมาจาก
tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop"))
tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose"))
เพราะผมดีบัคผ่านโค้ดนี้แล้วก็เด้ง Error ทันทีเลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-24 08:54:17 By : ford24832
 


 

No. 11



โพสกระทู้ ( 317 )
บทความ ( 0 )



สถานะออฟไลน์


แบบนี้ได้ไหมครับ ทำทั้งหมดที่ COlumn เป็นตัวเลขนะครับ


SELECT IIF(IsNULL(ColorInDisclose), 0, ColorInDisclose ) AS ColorInDisclose FROM PrintColor
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-24 17:46:08 By : OOP
 


 

No. 12



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ds.Tables("PrintColor").Columns.Contains("ColorInShop")

โทษทีครับ พิมพ์สด มีตกหล่น
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-24 22:26:00 By : PlaKriM
 


 

No. 13



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 11 เขียนโดย : OOP เมื่อวันที่ 2017-10-24 17:46:08
รายละเอียดของการตอบ ::
ไม่ได้อะครับ มันฟ้องค่า Conversion from type 'DBNull' to type 'integer' is not valid เหมือนเดิมเลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 08:27:51 By : ford24832
 


 

No. 14



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 12 เขียนโดย : PlaKriM เมื่อวันที่ 2017-10-24 22:26:00
รายละเอียดของการตอบ ::
ลองแล้วบันทึกได้ครับ แต่ว่ามันอัพเดทเลขไม่ถูกอะครับ ผมป้อนเบิกไป 5 ชิ้น ฟิลด์ ColorInShop = -6 ColorInDisclose = 4 อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 08:31:37 By : ford24832
 


 

No. 15



โพสกระทู้ ( 317 )
บทความ ( 0 )



สถานะออฟไลน์


ทำทั้งหมดทุก COlumn ที่เป็นตัวเลขตามที่บอกละยัง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 09:18:51 By : OOP
 


 

No. 16



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : ford24832 เมื่อวันที่ 2017-10-24 08:54:17
รายละเอียดของการตอบ ::
ถ้ารู้สาเหตุก็หาวิธีที่ถูกค้องให้ได้ครับ

ปล.การแก้ปัญหาที่ดีคือ อย่าเพิ่งดักจับมัน ปล่อยมัน Error แล้ว ไล่ตามมันไปครับ ลองดูซิว่าต้นเหตุ Error มันมาจากไหนบ้าง แล้วก็มั่นเอาโค้ดที่แก้ๆแล้วมา อัพเดท ตลอดเวลา ไม่งั้น คนอ่านจะคิดว่าท่านยังใช้โค้ดเดิมอยู่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 09:32:25 By : Dr.K
 


 

No. 17



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 15 เขียนโดย : OOP เมื่อวันที่ 2017-10-25 09:18:51
รายละเอียดของการตอบ ::
หมดแล้วครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 10:22:09 By : ford24832
 


 

No. 18



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 16 เขียนโดย : Dr.K เมื่อวันที่ 2017-10-25 09:32:25
รายละเอียดของการตอบ ::
ก่อนที่ผมจะนำโค้ดของทุกๆท่านมาอัพเดท ผมก็เปลี่ยนเป็นโค้ดเดิมก่อนแล้วจึงอัพเดทโค้ดที่ผู้เชี่ยวชาญแต่ละท่านได้บอกมาอะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 10:26:34 By : ford24832
 


 

No. 19



โพสกระทู้ ( 317 )
บทความ ( 0 )



สถานะออฟไลน์


คำสั่งนี้จะได้อะไรออกมา ลอง DEbug แล้วเอามันไปรันใน Access ดูหน่อยครับ อยากรู้ผลลัพธ์คำสั่งนี้
Code (C#)
sqlPrintColor = "SELECT PrintCLID,ColorInShop,ColorInDisclose FROM PrintColor"
sqlPrintColor &= " WHERE (PrintCLID='" & tmpPrintCLID & "')"

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 10:32:39 By : OOP
 


 

No. 20



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 19 เขียนโดย : OOP เมื่อวันที่ 2017-10-25 10:32:39
รายละเอียดของการตอบ ::

SELECT PrintCLID,ColorInShop,ColorInDisclose FROM PrintColor WHERE (PrintCLID='1')

access

ผมเลือกค่าหมึกไอดีที่ 1 ครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 10:43:40 By : ford24832
 


 

No. 21



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 18 เขียนโดย : ford24832 เมื่อวันที่ 2017-10-25 10:26:34
รายละเอียดของการตอบ ::
สรุปว่าตอนนี้ โค้ดทั้งหมดเป็นยังไงครับ
จะได้ดูโดยรวม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 12:16:58 By : Dr.K
 


 

No. 22



โพสกระทู้ ( 317 )
บทความ ( 0 )



สถานะออฟไลน์


ลองตามนี้คับ เอาไปแทนตรง บรรทัดที่ 75-76

Code (VB.NET)
If tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop")) <> DBNull.Value And tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop")) IsNot Nothing Then
            tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop"))
        End If
        If tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose")) <> DBNull.Value And tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose")) IsNot Nothing Then
            tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose"))
     End If


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-25 14:17:51 By : OOP
 


 

No. 23



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 22 เขียนโดย : OOP เมื่อวันที่ 2017-10-25 14:17:51
รายละเอียดของการตอบ ::
มันขึ้น Operator '<>' is not defined for types 'Boolean' and 'System.DBNull'. กับ 'IsNot' requires operands that have reference type, but this operands has the value type 'Boolean' อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 08:39:57 By : ford24832
 


 

No. 24



โพสกระทู้ ( 317 )
บทความ ( 0 )



สถานะออฟไลน์


ตรง IF ตัด CInt ออกก่อนครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 09:12:39 By : OOP
 


 

No. 25



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



สถานะออฟไลน์


เช็คจาก statement sql น่าจะดีที่สุด
โดยเปลี่ยน isnull จากคห 2 ข้างบน เป็น Nz([fieldname], CCur(0))
Code (SQL)
SELECT PrintCLID,Nz([ColorInShop],0) ColorInShop,Nz([ColorInDisclose],0) ColorInDisclose FROM PrintColor


ปล. หลีกเลี่ยงการใช้ if() เพราะช้ากว่า


ประวัติการแก้ไข
2017-10-27 09:51:43
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 09:50:06 By : Chaidhanan
 


 

No. 26



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตรวจสอบ ค่า ก่อนทำการ Convert
Code (VB.NET)
If String.IsNullOrEmpty(lsvPrintColorList.Items(i).SubItems(2).Text) Then
       tmpDiscloseNum = 0
   else
tmpDiscloseNum = CInt(lsvPrintColorList.Items(i).SubItems(2).Text)
End If

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 10:52:37 By : xxxx
 


 

No. 27



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 24 เขียนโดย : OOP เมื่อวันที่ 2017-10-27 09:12:39
รายละเอียดของการตอบ ::
ตัดออกแล้วขึ้นตามนี้อะครับ Option Strict On disallows operands of type Object for operator '='. Use the 'Is' operator to test for object identity.

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 13:22:53 By : ford24832
 


 

No. 28



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 25 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-10-27 09:50:06
รายละเอียดของการตอบ ::
ขึ้น Syntax error (missing operator) in query expression 'Nz([ColorInShop],0) ColorInShop'. อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 13:25:56 By : ford24832
 


 

No. 29



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 26 เขียนโดย : xxxx เมื่อวันที่ 2017-10-27 10:52:37
รายละเอียดของการตอบ ::
มันขึ้น Conversion from type 'DBNull' to type 'integer' is not valid อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 13:29:34 By : ford24832
 


 

No. 30



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



สถานะออฟไลน์


ขอโทษ copy มาแล้วแก้ไม่ครบ
Code (SQL)
SELECT PrintCLID,
  Nz([ColorInShop], 0) as Color_InShop,
  Nz([ColorInDisclose],0) as Color_InDisclose 
FROM PrintColor


ถ้ายังไงลองเอาโค๊ด sql ของ access ที่แก้ไขแล้ว เต็มๆ มาลงให้ดูหน่อยครับ
ปล. น่าจะใช้ alias ซ้ำกับ ชื่อ field ไม่ได้


ประวัติการแก้ไข
2017-10-27 14:16:46
2017-10-27 14:24:06
2017-10-27 14:35:45
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 14:15:02 By : Chaidhanan
 


 

No. 31



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 30 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-10-27 14:15:02
รายละเอียดของการตอบ ::
ผมใช้ VB.Net อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 14:40:21 By : ford24832
 


 

No. 32



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



สถานะออฟไลน์


เขียนคำสั่งเพื่อใช้คิวรี่ เก็บไว้ที่ไหนครับ
ที่เป็น select ...... แล้วขึ้น errror ว่า

Syntax error (missing operator) in query expression 'Nz([ColorInShop],0) ColorInShop'.

เอาอันนั้นมาลง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 17:42:55 By : Chaidhanan
 


 

No. 33



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


Code (VB.NET)
If String.IsNullOrEmpty(lsvPrintColorList.Items(i).SubItems(2).Text) Then 
'กรณีที่ตรวจสอบแล้วเป็นจริง แสดงว่าเป็นค่าว่าง
       tmpDiscloseNum = 0
  Else
'กรณีที่ตรวจสอบแล้วไม่ใช่ค่าว่างหรือ Null 
tmpDiscloseNum = CInt(lsvPrintColorList.Items(i).SubItems(2).Text)
End If

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-27 17:47:59 By : xxxx
 


 

No. 34



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 32 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-10-27 17:42:55
รายละเอียดของการตอบ ::
sqlPrintColor = "SELECT PrintCLID,Nz([ColorInShop],0) ColorInShop,Nz([ColorInDisclose],0) ColorInDisclose FROM PrintColor"

ผมใส่ในนี้อะครับ ไม่ทราบว่าผมใส่ถูกไหมครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-30 09:17:01 By : ford24832
 


 

No. 35



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 33 เขียนโดย : xxxx เมื่อวันที่ 2017-10-27 17:47:59
รายละเอียดของการตอบ ::
มันขึ้น Conversion from type 'DBNull' to type 'integer' is not valid เหมือนเดิมเลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-30 09:19:48 By : ford24832
 


 

No. 36



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ขอดู Code ที่ ใส่เงื่อนไขในการตรวจสอบ ค่าว่างหรือ DBNull ทีครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-30 10:35:19 By : xxxx
 


 

No. 37



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


อ่ะ ไกล์ให้

- dbnull ไม่ใช่ null คนละตัวกัน

- ไม่เกี่ยวกับ sql statment
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-30 10:41:28 By : ห้ามตอบเกินวันละ 2 กระทู้
 


 

No. 38



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



สถานะออฟไลน์


SELECT PrintCLID,Nz([ColorInShop],0) ColorInShop,Nz([ColorInDisclose],0) ColorInDisclose FROM PrintColor

ตัว alias name เปลี่ยนใหม่ อย่าให้เหมือนกับชื่อ field จริง

SELECT PrintCLID,Nz([ColorInShop],0) AS ColorIn_Shop,Nz([ColorInDisclose],0) AS ColorIn_Disclose FROM PrintColor
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-30 10:44:42 By : Chaidhanan
 


 

No. 39



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ยังไม่ได้อีกรึกระทู้นี้ นานมากกกกกกก
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-30 12:46:43 By : Dr.K
 


 

No. 40



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 36 เขียนโดย : xxxx เมื่อวันที่ 2017-10-30 10:35:19
รายละเอียดของการตอบ ::
Code (VB.NET)
                    If IsDBNull(ds.Tables("PrintColor").Rows(0).Item("ColorInShop")) Then
                        tmpColorInShop = 0
                    Else
                        tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop"))
                    End If

                    If IsDBNull(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose")) Then
                        tmpColorInDisclose = 0
                    Else
                        tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose"))
                    End If

เป็นแบบนี้อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 08:42:03 By : ford24832
 


 

No. 41



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 37 เขียนโดย : ห้ามตอบเกินวันละ 2 กระทู้ เมื่อวันที่ 2017-10-30 10:41:28
รายละเอียดของการตอบ ::
ปัญหาที่ว่ามันอยู่ตรงไหนอะครับ อันนี้ผมไม่ทราบจริงๆครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 08:43:31 By : ford24832
 


 

No. 42



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 38 เขียนโดย : Chaidhanan เมื่อวันที่ 2017-10-30 10:44:42
รายละเอียดของการตอบ ::
ขึ้นว่า Undefined function 'Nz' in expression. อะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 08:45:03 By : ford24832
 


 

No. 43



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 39 เขียนโดย : Dr.K เมื่อวันที่ 2017-10-30 12:46:43
รายละเอียดของการตอบ ::
ผมติดปัญหานี้ไม่ไปไหนร่วมเดือนกว่าได้แล้วล่ะครับ ติดจนจะถอดใจแล้วครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 08:45:49 By : ford24832
 


 

No. 44



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


พอดียิ่งอ่าน แล้วก็ยิ่งงง สรุป
ปัญหาอยู่ที่โค้ดนี้ใช่ไม๊ครับ
Code (VB.NET)
sqlPrintColor = "SELECT PrintCLID,ColorInShop,ColorInDisclose FROM PrintColor"
                sqlPrintColor &= " WHERE (PrintCLID='" & tmpPrintCLID & "')"

                da.SelectCommand.CommandText = sqlPrintColor
                da.Fill(ds, "PrintColor")

                tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop"))
                tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose"))

รึว่าอยู่ที่
Code (VB.NET)
sqlDisclose = "UPDATE PrintColor"
                sqlDisclose &= " SET ColorInShop=" & tmpColorInShop - tmpDiscloseNum & ","
                sqlDisclose &= " ColorInDisclose=" & tmpColorInDisclose + tmpDiscloseNum
                sqlDisclose &= " WHERE (PrintCLID='" & tmpPrintCLID & "')"
With comDisclose
                    .CommandText = sqlDisclose
                    .ExecuteNonQuery()
                End With



tmpColorInShop tmpColorInDisclose ไม่สามารถ อ่านค่าเป็น integer ได้ ปัญหานี้ยังคงอยู่นะครับ
ใช้ทั้ง ISNULL IsDBNull DBNull ก็ยังติด Error อยู่


ลองแบบนี้ดูนะครับ

Code (VB.NET)
If String.IsNullOrEmpty(ds.Tables("PrintColor").Rows(0).Item("ColorInShop")) Then
    tmpColorInShop = 0
Else
    tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop"))
End If

If String.IsNullOrEmpty(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose")) Then
    tmpColorInDisclose = 0
Else
    tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose"))
End If



ปล.ปัญหานี้จะหายไปอย่างสิ้นเชิงเมื่อเรา แก้ที่ต้นเหตุ คือตอนที่ Insert ColorInShop,ColorInDisclose ใน PrintColor เป็น 0 ตั้งแต่แรกครับ
เพราะงั้นถ้าทำทุกอย่างแล้วไม่ได้ แนะนำให้ไปแก้ใน Access ให้เป็น 0 แทนค่า null แค่นี้ก็แก้ปัญหาได้แล้วครับ

อย่ายึดติดแค่ว่าต้องแก้ที่โปรแกรมอย่างเดียว เพราะเป้าหมายใหญ่คือ ค่า null ถ้าเราทำให้มันไม่ null ซะ ปัญหา null ก็จะหายไป
พร้อมสู้กับปัญหาอื่นต่อไปครับ 5555
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 09:25:30 By : Dr.K
 


 

No. 45



โพสกระทู้ ( 317 )
บทความ ( 0 )



สถานะออฟไลน์


ลองดูตามนี้ครับ ถ้าไม่ได้ก็จนปัญญาละ เอาไปแทนตรง บรรทัดที่ 75-76

Code (VB.NET)
        If Not (DBNull.Value Is ds.Tables("PrintColor").Rows(0).Item("ColorInShop")) And Not (Nothing Is ds.Tables("PrintColor").Rows(0).Item("ColorInShop")) Then
            tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop"))
        End If
        If Not (DBNull.Value Is ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose")) And Not (Nothing Is ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose")) Then
            tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose"))
        End If



ประวัติการแก้ไข
2017-10-31 09:28:11
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 09:27:33 By : OOP
 


 

No. 46



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 44 เขียนโดย : Dr.K เมื่อวันที่ 2017-10-31 09:25:30
รายละเอียดของการตอบ ::
ปัญหาติดอยู่ที่อันแรกอะครับ มันมองค่า ColorInShop , ColorInDisclose เป็น 0 ตลอดเลยครับ พอถึงช่วงอัพเดทมันจึงไม่ยอมบวกลบเลขให้แต่มันอัพเดทเป็นตัวเลขที่ป้อนไปแทนอะครับ อันนี้คือในกรณีที่ดัก DBNull นะครับ

ส่วนโค้ดที่ผมเพิ่งลองไปก็ติด Conversion from type 'DBNull' to type 'string' is not valid อะครับ

ถ้าต้องแก้ใน Access คือ เปลี่ยนค่าในฟิลด์เป็น 0 หรอครับหรือว่าอย่างไร

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 09:42:10 By : ford24832
 


 

No. 47



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 45 เขียนโดย : OOP เมื่อวันที่ 2017-10-31 09:27:33
รายละเอียดของการตอบ ::
ตอนนี้ค่าของ ColorInShop อัพเดทให้แล้วครับ มันสามารถหักค่าตามจำนวนที่ป้อนได้แล้ว แต่ว่าค่า ColorInDisclose มันยังไม่บวกค่าถูกยืมเพิ่มให้อะครับ และมันถูกแทนที่ด้วยตัวเลขที่ป้อนไปอะครับ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 09:45:03 By : ford24832
 


 

No. 48



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 46 เขียนโดย : ford24832 เมื่อวันที่ 2017-10-31 09:42:10
รายละเอียดของการตอบ ::
ลองแบบนี้ดูก่อนครับ
Code (VB.NET)
If String.IsNullOrEmpty(ds.Tables("PrintColor").Rows(0).Item("ColorInShop")) Then
    tmpColorInShop = 0
Else
    tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop"))
End If

If String.IsNullOrEmpty(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose")) Then
    tmpColorInDisclose = 0
Else
    tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose"))
End If


แล้วก็ลองแบบที่ท่านอื่นๆเสนอมา ถ้าไม่ได้ให้แก้ที่ Access รับรองหาย
แล้วต่อไปก็ Insert ColorInShop,ColorInDisclose ใน PrintColor เป็น 0 ถ้ามันไม่มีค่านะ

สรุปว่าแก้ปัญหาได้แล้วนะครับ(ผมเชื่อแบบนั้นเลย)
คำถามคือ ทำไมมันไม่มีค่าหรือ เป็น 0 ตั้งแต่แรกละครับ ในเมื่อมันต้องสืบต่อไปที่การคำนวนตัวอื่น
หรือว่า ให้ค่าเป็น 0 ก็ได้ รึครับ(อันนี้แค่สงสัยนะ ครับ)

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 09:47:38 By : Dr.K
 


 

No. 49



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 48 เขียนโดย : Dr.K เมื่อวันที่ 2017-10-31 09:47:38
รายละเอียดของการตอบ ::

มันต้องแก้ตรงไหนใน Access หรอครับ

ผมเองก็ยังสงสัยเหมือนกันครับว่าทำไมมันถึงเป็นงั้น ตอนนี้ฟิลด์ของ ColorInShop ยอมหักค่าตามต้องการได้ แต่ ColorInDisclose กลับไม่เป็นอย่างงั้น
เพราะในครั้งแรกที่ผมทำฟอร์มนี้ขึ้นมาเกือบ 2 เดือนที่แล้ว ผมรันฟอร์มนี้ผ่านฉลุยไม่ติดปัญหาใดๆ ตัวเลขบวกลบค่าได้ตามปกติ แต่พมาเดือนที่แล้วผมก็มีปัญหาอย่างที่ตั้งกระทู้ไว้นะครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 09:56:45 By : ford24832
 


 

No. 50



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 49 เขียนโดย : ford24832 เมื่อวันที่ 2017-10-31 09:56:45
รายละเอียดของการตอบ ::
ลองดูก็ไม่เสียหลายครับ
วิธีแก้มี 2 ทางเลือก

1. ใช้ค่าเริ่มต้นใน Access กรณีที่เราใช้ datatype เป็น number
111

2. ตอนนี้ให้เขาไปแก้ใน Access ให้เป็น 0
แล้วต่อไปตอน Insert ถ้าไม่มีค่า ก็ให้ใส่ 0 (เพราะว่าปล่อยให้มันว่างตั้งแต่ตอน insert ปัญหานี้จึงเกิด)

แนะนำให้เลือก ข้อ 1 เพราะ ถือเป็น ผู้ออกแบบ database ที่ดี ไม่สร้างปัญหาย้อนหลังกับคนเขียนโปรแกรมด้วย

ปล. แต่ก่อนผมก็เคยเจอปัญหาแบบนี้เหมือนกัน ใช้ทั้ง ISNULL IsDBNull DBNull ก็ยังติด Error อยู่
String.IsNullOrEmpty ตัวเดียวเอาอยู่ขอแค่มันแปลงเป็น String ได้นะ
ต่อมาเลยรู้ว่ามันไม่ใช่การแก้ที่ต้นเหตุ เพราะปัญหาจริงๆคือ database ถ้าเราออกแบบ database ให้ครอบคลุมคนเขียนต่อก็ง่าย


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-31 10:13:12 By : Dr.K
 


 

No. 51



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 50 เขียนโดย : Dr.K เมื่อวันที่ 2017-10-31 10:13:12
รายละเอียดของการตอบ ::
ลองทำแล้วก็ยังไม่เป็นผลที่คาดไว้เลยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-01 09:33:31 By : ford24832
 


 

No. 52



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 51 เขียนโดย : ford24832 เมื่อวันที่ 2017-11-01 09:33:31
รายละเอียดของการตอบ ::
ตอนนี้ทดลองอะไรแล้วบ้าง
แล้วติดตัวไหนบ้างครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-01 10:02:35 By : Dr.K
 


 

No. 53



โพสกระทู้ ( 49 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 52 เขียนโดย : Dr.K เมื่อวันที่ 2017-11-01 10:02:35
รายละเอียดของการตอบ ::
ก็ทดลองทำตามที่ทุกคนแนะนำมาอะครับ ส่วนใหญ่จะติดตรงโค้ดนี้อะครับ

Code (VB.NET)
sqlPrintColor = "SELECT PrintCLID,ColorInShop,ColorInDisclose FROM PrintColor"
                sqlPrintColor &= " WHERE (PrintCLID='" & tmpPrintCLID & "')"

                da.SelectCommand.CommandText = sqlPrintColor
                da.Fill(ds, "PrintColor")

                tmpColorInShop = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInShop"))
                tmpColorInDisclose = CInt(ds.Tables("PrintColor").Rows(0).Item("ColorInDisclose"))




แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-01 12:07:31 By : ford24832
 


 

No. 54



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 53 เขียนโดย : ford24832 เมื่อวันที่ 2017-11-01 12:07:31
รายละเอียดของการตอบ ::
เป็นเรื่องปกติมากที่ไม่ได้ตามที่ควรจะเป็น เพราะ อาจจะทำไม่ครบตามที่บอก ครับ

ตอนนี้ทดลองอะไรแล้วบ้าง
แล้วติดตัวไหนบ้างครับ

ถ้าครบจะต้องได้อยู่แล้วครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-01 12:49:32 By : Dr.K
 


 

No. 55



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 54 เขียนโดย : Dr.K เมื่อวันที่ 2017-11-01 12:49:32
รายละเอียดของการตอบ ::
ในกรณีที่เราใส่ค่าใน Access เป็น 0 ยังไง Error null หรือ invalid ย่อมหายไป
เช่นเดียวกับ String.IsNullOrEmpty ก็จะตัดปัญหาเรื่อง Error null หรือ invalid เช่นกัน

ถ้าเกิดปัญหาขึ้นจริง ย่อมแสดง ว่า Error ต้อง เป็นตัวอื่นไม่ใช่ null หรือ invalid เป็นเช่นนั้นรึป่าวครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-01 18:47:27 By : Dr.K
 


 

No. 56



โพสกระทู้ ( 9,553 )
บทความ ( 2 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 53 เขียนโดย : ford24832 เมื่อวันที่ 2017-11-01 12:07:31
รายละเอียดของการตอบ ::

ถ้า ds.Tables("PrintColor").Rows(0).Item("ColorInShop") เป็น dbnull
tmpColorInShop = CInt( dbnull ) ยังไงก็ error ( Error เขาก็แจ้งไว้แล้ว )


ต้องทำการตรวจสอบก่อนที่จะทำการ convert (คห 7 ก็แสดงความคิดเห็นให้แล้ว)

Code (VB.NET)
if ds.Tables("PrintColor").Rows(0).Item("ColorInShop") = null 
then 
  ' assign ค่าให้ตัวแปรตรงๆ
   tmpColorInShop = 0
else 
  ' ทำแบบเดิม
  tmpColorInShop = CInt( ...... )


** โค๊ดข้างบนเป็นแค่แนวคิด ให้ใช้ if ช่วย โค๊ดอาจไม่ถูกต้อง ไม่ได้ทดสอบ

แต่ผมไม่ชอบที่จะใช้ main code ตรวจสอบ ค่า null ของ database
ชอบที่จะใช้ sql statement ทำการตรวจสอบมากกว่า
เพราะว่าไม่อาจใช้ฟังก์ชั่่น Nz ได้ (ก็ไม่รู้ว่าเพราะอะไร แต่ผมใช้ access 2016 ทดลองดูก็ใช้ได้)
ถ้าอยากใช้ sql statement ตรวจสอบ ก็ลองศึกษาจากลิงค์นี้ดู
https://www.w3schools.com/sql/sql_isnull.asp


ประวัติการแก้ไข
2017-11-01 23:28:50
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-11-01 23:26:27 By : Chaidhanan
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : [.NET]Error ตรง "Conversion from type 'DBNull' to type 'integer' is not valid." แก้ยังไงดีครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่