Data type Conversion Erro (Error 3421)
กระทู้เก่าบอร์ด อ.Yeadram

 1,857   3
URL.หัวข้อ / URL
Data type Conversion Erro (Error 3421)

Data type Conversion Erro (Error 3421)จะแก้อย่างไรครับ
เกิดตอน Save
CODE ที่ใช้มีดังนี้ครับ ก่อนหน้านี้สั่ง RS.addnew

Dim i As Integer
i = 0
Do Until i > 50
RS.Fields(i) = Me("T" & i)
i = i + 1
Loop
RS.Update

ขอบคุณครับ

3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R04827
ฟิลด์แต่ละฟิลด์ใน RS เป็นประเภทข้อมูลชนิดเดียวกันหมดหรือ หรือมีอะไรบ้าง เดาว่าปัญหาน่าจะเกิดเพราะต้องมีบางฟิลด์ใน RS ที่มีประเภทข้อมูลที่ต่างจากคอลโทรล Ti ครับ
2 @R04848
เจอแล้วครับ อย่างที อ.สันติ บอก Ti บางค่าที่ผมปล่อยให้ว่างมันจะฟ้อง
conversion Error เพราะเป็น Textbox ที่ Unbround แต่บังคับให้มัน SAVE
ลง Field ดังนั้น ถ้ามันจะ Save ก็คือค่า Null แต่ Rs ที่เป็น บางค่าเป็นข้อมูลประเภทวันที่ หรือประเภทอื่น ที่รับค่า Null ไม่ได้ (ตรงนี้ เดาครับ ถ้าไม่ถูกรบกวนแก้ให้ด้วยครับ)
มันจึง ERROR วิธีแก้ที่ง่ายน่าจะเป็น
Do Until i > 50
On error resume next    '*************
RS.Fields(i) = Me("T" & i)
i = i + 1
3 @R04849
การปล่อยผ่านด้วยคำสั่ง On Error Resume Next ในกรณีนี้ คิดว่าไม่ควรทำ เพราะว่าถ้าเกิดมันมี error อะไรจริงๆเพราะการป้อนข้อมูลผิด แทนที่เราจะรู้ว่าเกิดปัญหา มันก็จะไม่แจ้งอะไรออกมาสิครับ ดังนั้นควรจะทดสอบตรงๆไปดีกว่าว่าถ้าเป็น Null แล้วไม่ต้องกำหนดให้แก่ฟิลด์

อีกอย่างที่เพิ่งคิดได้ก็คือการอ้าง RS.Fields(i)   ผมไม่แน่ใจว่า Fields(i) จะโยงไปยังฟิลด์เดิมทุกครั้งที่อ้างหรือไม่นะครับ แต่ผมว่าไม่ควรอ้างแบบนี้   สมมุติว่าฟิลด์ชื่อว่า F01, F02, ... , F50 เราน่าจะอ้างด้วย RS.Fields("F" & format$(i,"00")) เสียมากกว่านะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3155s