กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
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
บางเครื่องทำได้ก็สามารถทำได้ แต่บางเครื่องไม่สามารถทำได้ และ
บางเครื่องเป็นเครื่องรุ่นเก่า
ตอนที่ผม 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 แค่นั้นครับ
Time: 0.1585s