บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ


0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

26 ม.ค. 64 , 10:32:00
อ่าน 1072 ครั้ง

Jiw Jewel

โปรแกรมแจ้งเตือนว่า error 13 'type mismatch'

code ตัวอย่าง

    CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & aaa & "  WHERE ((([proAssess Detail].proRequest_ID)='" & Me.proRequest_ID & "'))"

ซึ่งตรง aaa ค่ะ คือค่าที่รับมาจากการคำนวณในform ซึ่งมาจากการหารแล้วทำเป็นเปอร์เซ็นต์ค่ะ มีจุดทศนิยมเป็น 10 ตัวเลยทีเดียวค่ะ

ทีนี้อยากสอบถามว่าที่เกิดerror ขึ้นเป็นเพราะทศนิยมเยอะเกินไปหรือเพราะกำหนดอะไรปิดกันแน่
ก่อนหน้านี้ ลองแปลงformat ดูค่ะ แต่ตัวเลขที่แปลงมามี "" ติดอยู่ด้วย จึงคิดว่าที่error เพราะเช่นนี้หรือเปล่า และขอให้ช่วยแนะนำการตัดทศนิยมด้วยนะคะ ขอบคุณล่วงหน้าค่ะ

 

26 ม.ค. 64 , 10:47:52
ตอบกลับ #1

PNR

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #1 เมื่อ: 26 ม.ค. 64 , 10:47:52 »
1.backmargin_sum_percent ในตาราง Datatype เป็นอะไรครับ ถ้าเป็น text ไม่น่าจะมีปัญหา

2.form ที่คำนวนอยู่ในฟอร์มย่อยไหมครับ

3.ตัดทศนิยมให้เหลือ 2 ตำแหน่ง
   CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & Format(aaa, "#.##") & "  WHERE ((([proAssess Detail].proRequest_ID)='" & Me.proRequest_ID & "'))"

« แก้ไขครั้งสุดท้าย: 26 ม.ค. 64 , 10:57:17 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

26 ม.ค. 64 , 10:59:08
ตอบกลับ #2

Jiw Jewel

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #2 เมื่อ: 26 ม.ค. 64 , 10:59:08 »
ตอบคำถามนะคะ
1. datatype เป็น double format เป็น percent กำหนด จุดทศนิยม 2 ตำแหน่งค่ะ
2.form ที่คำนวนอยู่ในฟอร์มย่อยอีกทีค่ะ
3. ลองแล้วค่ะ ยังขึ้นเหมือนเดิมค่ะ

« แก้ไขครั้งสุดท้าย: 26 ม.ค. 64 , 11:04:54 โดย Jiw Jewel »

 

26 ม.ค. 64 , 12:12:27
ตอบกลับ #3

PNR

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #3 เมื่อ: 26 ม.ค. 64 , 12:12:27 »
ตอบคำถามนะคะ
1. datatype เป็น double format เป็น percent กำหนด จุดทศนิยม 2 ตำแหน่งค่ะ
2.form ที่คำนวนอยู่ในฟอร์มย่อยอีกทีค่ะ
3. ลองแล้วค่ะ ยังขึ้นเหมือนเดิมค่ะ

datatype ของ proRequest_ID ละครับเป็นแบบไหน จากโค้ดถ้าเป็น text ก็ถูกแต่ถ้าเป็น number ต้องตัด ' ออกไป
ถ้ายังไม่ได้ทักไลน์มาได้เลยครับ
« แก้ไขครั้งสุดท้าย: 26 ม.ค. 64 , 12:22:07 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

26 ม.ค. 64 , 12:42:49
ตอบกลับ #4

Jiw Jewel

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #4 เมื่อ: 26 ม.ค. 64 , 12:42:49 »
ตอบคำถามนะคะ 
proRequest_ID เป็น string ค่ะ ก่อนหน้าลองเทสดูแล้ว error มาจาก ค่าใน textbox ที่สั่งให้โปรแกรมคำนวณให้อย่างแน่นอนค่ะ เพียงแต่ว่ายังหาสาเหตุไม่ได้ค่ะว่าทำไมถึงขี้นแบบนั้นค่ะ

ขอสอบถามอีกเรื่องนะคะ จากคำถามก่อนหน้าที่ถามมาว่าเป็นsubform หรือไม่ มันเกี่ยวข้องอะไรกันหรือเปล่าคะ

 

26 ม.ค. 64 , 12:50:12
ตอบกลับ #5

PNR

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #5 เมื่อ: 26 ม.ค. 64 , 12:50:12 »
คือปกติถ้าอยู่ในซัพฟอร์ม จะอ้างอิงแบบนี้
[Forms]![ชื่อฟอร์มหลัก].[ชื่อ subform].Form![ชื่อ textbox]
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

26 ม.ค. 64 , 13:35:44
ตอบกลับ #6

Jiw Jewel

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #6 เมื่อ: 26 ม.ค. 64 , 13:35:44 »
อ้ออ เข้าใจแล้วค่ะ แต่ว่าไม่เกี่ยวกันค่ะ เพราะว่า ตัวโค้ดมีเท่านั้นเลยค่ะ ลองสร้าง textbox อีกตัวขึ้นมาแล้วใส่ค่าที่ทศนิยมเยอะๆลงไป ไม่เกิด error ค่ะ ถ้าเป็นเป็น textbox ตัวอื่น แต่ถึงอย่างนั้นก็ไม่รู้ว่าจะพลิกแพลงแก้ปัญหาอย่างไรดีค่ะ

 

26 ม.ค. 64 , 13:47:38
ตอบกลับ #7

PNR

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #7 เมื่อ: 26 ม.ค. 64 , 13:47:38 »
อ้ออ เข้าใจแล้วค่ะ แต่ว่าไม่เกี่ยวกันค่ะ เพราะว่า ตัวโค้ดมีเท่านั้นเลยค่ะ ลองสร้าง textbox อีกตัวขึ้นมาแล้วใส่ค่าที่ทศนิยมเยอะๆลงไป ไม่เกิด error ค่ะ ถ้าเป็นเป็น textbox ตัวอื่น แต่ถึงอย่างนั้นก็ไม่รู้ว่าจะพลิกแพลงแก้ปัญหาอย่างไรดีค่ะ
ต้องดูที่ textbox นั้นแล้วละครับ ว่า มีการคำนวนแบบไหน ตั้งค่าไว้แบบไหน
type mismatch คือ ประเภทหรือชนิดข้อมูลไม่เหมือนกัน

1.Msgbox backmargin_sum_percent
   ต้องการดูว่าค่าเป็นแบบไหน
2.ถ้ากำหนดตัวแปรมาเก็บค่าไว้แล้ว นำไปอัพเดทได้ไหมเช่น
โค๊ด: [Select]
Dim strAAA As String
strAAA = Me.aaa
CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & strAAA & "  WHERE ((([proAssess Detail].proRequest_ID)='" & Me.proRequest_ID & "'))"

3.ลองวิธีแปลงค่าก่อนนำไปอัพเดทในตารางเช่น
Val(Replace(backmargin_sum_percent.Value,"%",""))

4.ผมลองสร้างคิวรี่ SQL ประมาณนี้
โค๊ด: [Select]
CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & Val(Replace([Forms]![Mainform].[SubForm].[Form]![aaa], "%", "")) & " WHERE [proAssess Detail].proRequest_ID = '" & [Forms]![Mainform].[SubForm].[Form]![proRequest_ID] & "'"

« แก้ไขครั้งสุดท้าย: 26 ม.ค. 64 , 15:11:33 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Jiw Jewel

26 ม.ค. 64 , 14:57:28
ตอบกลับ #8

Jiw Jewel

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #8 เมื่อ: 26 ม.ค. 64 , 14:57:28 »
ตอนนี้ค่อนข้างมั่นใจแล้วค่ะว่าสาเหตุน่าจะมาจากการที่  textbox ที่ให้คำนวณนั้นเกิดมาจาก การเอา % + ตัวเลขธรรมดาค่ะ เลขทำให้เกิด error นี้ขี้น

แต่ตอนนี้ลองแปลงทั้งการ ทำ % เป็นตัวเลขแล้ว เอามาบวกกันผลก็ยังคงเดิมค่ะ error ยังไม่หายไปค่ะ

 

26 ม.ค. 64 , 15:11:18
ตอบกลับ #9

PNR

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #9 เมื่อ: 26 ม.ค. 64 , 15:11:18 »
ตอนนี้ค่อนข้างมั่นใจแล้วค่ะว่าสาเหตุน่าจะมาจากการที่  textbox ที่ให้คำนวณนั้นเกิดมาจาก การเอา % + ตัวเลขธรรมดาค่ะ เลขทำให้เกิด error นี้ขี้น

แต่ตอนนี้ลองแปลงทั้งการ ทำ % เป็นตัวเลขแล้ว เอามาบวกกันผลก็ยังคงเดิมค่ะ error ยังไม่หายไปค่ะ

ถ้าข้อมูลไม่ลับมาก ส่งเข้าข้อความผมมาหน่อยครับ ผมเช็คให้
Time to stop for me  :dizzy:
 

26 ม.ค. 64 , 16:02:09
ตอบกลับ #10

Jiw Jewel

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #10 เมื่อ: 26 ม.ค. 64 , 16:02:09 »


ตามนี้เลยค่ะ

 

27 ม.ค. 64 , 08:40:46
ตอบกลับ #11

Jiw Jewel

: บันทึกค่าตัวเลขจากform ลงtable ค่ะ error type mismatch ค่ะ
« ตอบกลับ #11 เมื่อ: 27 ม.ค. 64 , 08:40:46 »
update นะคะ

ตอนนี้แก้ได้แล้วค่ะ เรื่องของเรื่องเนี่ย เหมือนว่าเวลาคำนวณมันจะมีช่องที่เป็น 0 อยู่ เพราะคำนวณพร้อมกัน แล้วก่อนหน้านี้มีโค้ดให้ save record ก่อนค่ะ ทำให้เวลาsave ไปแล้วค่าตัวอื่นมันรีเซ็ทใหม่มันเลยกลายเป็น 0 แล้ว 0 เนี่ยมันก็เอามาหารไม่ได้มันเลยขึ้น error ค่ะ ซึ่งวิธีแก้นะคะ ก็คือต้องลำดับcode ใหม่ ให้โปรแกรมมันคำนวณให้เสร็จก่อนแล้วค่อยsave ค่ะ เพราะที่มันจะได้ไม่เอา 0 มาหาร  :zzz:

ยังไงก็ขอบคุณ คุณ PNR มากนะคะที่มาตอบ ได้คิดอะไรหลายอย่างเลยค่ะ  :fake smile:

 
โพสต์นี้ได้รับคำขอบคุณจาก: PNR, Somsak472


บอร์ดเรียนรู้ Access สำหรับคนไทย


 

Sitemap 1 2 3 4 5