ปัญหาเกี่ยวกับการรันนิ่งเอกสาร
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 390   7
URL.หัวข้อ / URL
ปัญหาเกี่ยวกับการรันนิ่งเอกสาร

อ.สุภาพ ผมมีปัญหาเกี่ยวกับรันนิ่งเอกสารคือ  
ตอนที่ผม DblClick ที่ DOC_NO  
บางเครื่องสามารถทำได้ และบางเครื่องขึ้นข้อความว่า 
 
Run-time error ‘49’: 
Bad DLL calling convention 
 
 
Private Sub DOC_NO_DblClick(Cancel As Integer) 
Dim strYear As String, dte As Date, intMax As Integer 
 
If Format(Date, "m") >= 1 Then 
    dte = DateSerial(Year(DOC_DATE), MONTH(DOC_DATE), Day(DOC_DATE)) 
Else 
    dte = DOC_DATE 
End If 
 
strYear = Format(dte, "YYMM") 
 
If Me.DOC_NO = "" Or IsNull(Me.DOC_NO) Then 
        If DCount("Val(Mid([DOC_NO ],8))", "QWTBRH1", "Left([DOC_NO],7) = 'T" & _ 
            strYear & [DOC_TYPE] & [TIMES] & "'") = 0 Then 
            Me.DOC_NO = "T" & strYear & DOC_TYPE & TIMES & "001" 
        Else 
            intMax = DMax("Val(Mid([DOC_NO ],8))", "QWTBRH1", _ 
            "Left([DOC_NO ],7) = 'T" & strYear & [DOC_TYPE] & [TIMES] & "'") 
            Me.DOC_NO = "T" & strYear & DOC_TYPE & TIMES & Format(intMax + 1, "000") 
        End If 
End If 
End Sub 
 
ผมไม่ทราบว่าจะต้องแก้ไขอย่างไรบ้างครับ เครื่องที่มีปัญหาพบว่า 
จะมีปัญหาเกี่ยวกับวันที่ก่อน เข้าไปแก้วันที่ใน Regional Settings 
บางเครื่องทำได้ก็สามารถทำได้ แต่บางเครื่องไม่สามารถทำได้ และ 
บางเครื่องเป็นเครื่องรุ่นเก่า 
 

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

1 @R01098
ลองดูว่ามี References ตัวไหนหายไปบ้าง โดยขณะที่อยู่ในหน้าต่างเขียนโค้ด ให้ไปที่เมนู Tools>References>ดูว่ามีคำว่า Missed อยู่ข้างหน้ารายการที่ได้คลิกเลือกไว้หรือเปล่า ถ้ามีให้คลิกออก แล้วสั่งให้มีการ Compile & Save All Modules ใหม่ แล้วดูว่าปัญหาได้หายไปหรือไม่ หรือดูว่า DAO ของทั้ง 2 เครื่องฯ ต่างเวอร์ชันกันหรือไม่ เช่น DAO 3.6 หรือ DAO 3.5 เป็นต้น ให้ลองคลิกเอา DAO ออกก่อน แล้วออกจากเมนู Reference แล้วเข้ามาใหม่ เพื่อเลือก DAO กลับคืน อย่าลืม Compile & Save All Modules อีกครั้งด้วยครับ
2 @R01111
ลองไปทำดูแล้วครับ เครื่องของผม DAO 3.51 อีกเครื่อง DAO 3.6 และผมได้ แก้ไข Compile & Save All Modules แต่ยังขึ้นข้อความเหมือนเดิม Run-time error ‘49’: Bad DLL calling convention ขึ้นแถบสีเหลืองที่ข้อความ dte = DateSerial(Year(DOC_DATE), MONTH(DOC_DATE), Day(DOC_DATE))
3 @R01113
ที่ผมเคยเจอก็มีเจ้า DAO ตัวนี้แหล่ะเป็นตัวก่อนปัญหา ให้ลอง Copy ไฟล์ต่างๆ ในห้อง C:\Program Files\Common Files\Microsoft Shared\dao ที่เป็น 3.6 ไปแทน 3.51 ดูครับ แล้วอย่าลืมลงทะเบียน DAO 3.6 นี้ก่อนใช้นะครับ วิธีการลงทะเบียนให้ดูที่ http://agserver.kku.ac.th/basiceng/activexreg.asp
4 @R01134
อ.สุภาพครับ ถ้าผมจะเปลี่ยน [DOC_DATE] จาก Date/Time เป็น Text ธรรมดา เช่น 15/01/03 = 150103 ผมจะต้องแก้ Code ใน [DOC_NO] อย่างไรบ้างครับ ถึงจะให้มันรันนิ่งได้ครับ โดยที่รันนี่งของผมจะมีดังนี้ ตัวที่ 1 = เป็นตัวอักษร T ตัวที่ 2-3 = เป็นปี โดยเอาจาก 2 ตัวสุดท้ายของ [DOC_DATE] ตัวที่ 4-5 = เป็นเดือน โดยเอาจาก 2 ตัวตรงกลางของ [DOC_DATE] ตัวที่ 6 = เป็นประเภทเอกสาร [DOC_TYPE] ตัวที่ 7 = เป็นครั้งที่ที่ยื่นเอกสาร [TIMES] ตัวที่ 8-10 = เลขที่เอกสาร
5 @R01135
ให้เปลี่ยนจากบันทัด strYear = Format(dte, "YYMM") เป็น strYear = Right(txtDate, 2) & Mid(txtDate, 3, 2) โดย txtDate คือ Text Box ที่เก็บค่าวันที่ 15/01/03
6 @R01139
ผมได้ไปแก้แล้ว ผมใส่วันที่ใน DOC_DATE และใส่ข้อมูล แล้ว DblClick ที่ DOC_NO รันนิ่งที่ขึ้นมา T10001 มันขาด ปี กับ เดือนไป และผมป้อนข้อมูลอีกครั้ง แล้ว DblClick ที่ DOC_NO รันนิ่งที่ขึ้นมา T10001 มันซ้ำกันครับ ผมได้แก้ที่บรรทัด strYear = Right(txtDate, 2) & Mid(txtDate, 3, 2) เป็น strYear = Right(DOC_DATE, 2) & Mid(DOC_DATE, 3, 2) ผมป้อนข้อมูล แล้ว DblClick ที่ DOC_NO รันนิ่งที่ขึ้นมา T030110003 แล้วได้ป้อนข้อมูลอีก รันนิ่งที่ได้ T030110003 ผมไม่แน่ใจว่า บรรทัดในช่วงนี้ต้องแก้ไขอะไรหรือปล่าวครับ If Format(Date, "m") >= 1 Then dte = DateSerial(Year(DOC_DATE), MONTH(DOC_DATE), Day(DOC_DATE)) Else dte = DOC_DATE End If
7 @R01140
ถ้าลำดับของรหัสยังเหมือนเดิม แต่เปลี่ยนฟีลด์จากเดิมที่เป็น Date/Time ให้เป็น Text แทน ตรงบันทัดที่ว่าจะไม่มีผล เพราะมันจะส่งค่าให้ strYear แค่นั้นครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1585s