แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - PNR

หน้า: 1 2 3 [4] 5 6 7 ... 33
49
ถ้าเราต้องการให้แยก Field ในตาราง ครับ เราต้องเพิ่มทุกช่องใช่ไหมครับ
เช่น ถ้าเราใส่ตรง Number 1 - 10
ก่จะได้
Runnum   : AAA 10ตัว
Runnum1 : 2010 10ตัว
Runnum2 : 0001-0010

แก้โค้ดเป็นแบบนี้
โค๊ด: [Select]
Dim strNum As String
Dim I As Long
Dim db As Database
Dim rs As Recordset
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("table1", DB_OPEN_DYNASET)
   
    For I = Me.txtBeginNumber To Me.txtEndNumber
    strNum = Right("00000" & I, 4)

     rs.AddNew
        rs![Runnum] = Me.txtModel
        rs![Runnum1] = Me.txtYear
        rs![Runnum2] = strNum
       
     rs.Update
     Next
rs.Close
db.Close
Set rs = Nothing: Set db = Nothing

50
ที่มุมมองออกแบบ บน MainForm ให้คุณกดติ๊กที่ Subform แล้วที่คุณสมบัติของ Subform ดูชื่อจริงๆของ Subformครับมันไม่ได้ชื่อเดียวกับที่คุณตั้งไว้เสมอไป ถ้าจะแก้ให้ตรงต้องแก้ตรงนั้นครับ


51
ขอปรับเพิ่มโค้ดนิดหน่อยครับ เปิด record มาใช้แล้วลืมปิด

โค๊ด: [Select]
Dim strNum As String
Dim I As Long
Dim db As Database
Dim rs As Recordset
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("table1", DB_OPEN_DYNASET)
   
    For I = Me.txtBeginNumber To Me.txtEndNumber
    strNum = Nz(Me.txtModel) & Nz(Me.txtYear) & Right("00000" & I, 4)

     rs.AddNew
        rs![Runnum] = strNum
     rs.Update
     Next
rs.Close
db.Close
Set rs = Nothing: Set db = Nothing   

52

อาจจะเกิดจากสาเหตุอื่นๆ ได้ครับ
เช่นการกำหนด เชื่อมโยงข้อมูลหลัก กับข้อมูลลูก ตรงนี้ก็มีส่วนเหมือนกัน
ต้องดูการกำหนด RecordSource ของคอมโบ txtNationalID ด้วยครับว่าตั้งค่าถูกหรือไม่

53
อ้างถึง
การเพิ่มจำนวน 1 -100 แล้วบันทึกลงตารางแล้วจะได้ 100 ตาราง

100 ตารางหรือ 100 Record ครับ ???

ถ้า 100 Record ก็ตามนี้เลย
โค้ด

Private Sub Command8_Click()
Dim strNum As String
Dim I As Long
Dim db As Database
Dim rs As Recordset
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("table1", DB_OPEN_DYNASET) 'Table1 คืื่อตาราง
   
    For I = Me.txtBeginNumber To Me.txtEndNumber
    strNum = Nz(Me.txtModel) & Nz(Me.txtYear) & Right("00000" & I, 4)

     rs.AddNew
        rs![Runnum] = strNum 'runnum คือ Field ในตาราง
     rs.Update
     Next   
End Sub

เวลาใส่ตัวเลข ในช่องเริ่มและสิ้นสุด ใส่ตัวเลข ธรรมดาได้เลยเช่น  1   กับ 100


54
ผมพิมพ์คำว่า เอนก Access มันแก้ไขให้เอง เป็น อเนก
ปกติก็ไปแก้ที่การตั้งค่า แต่พอเป็น Access คั้งแต่ 2010 ขึ้นไป แก้ที่ตรงไหนครับ
ผมลองไปที่ ตั้งค่า > ฐานข้อมูลปัจจุบัน > ตัวเลือกการแก้ไขชื่อัตโนมัติ คลิกที่กล่องคำสั่งออก
แล้วปิดโปรแกรม เปิดใหม่ แต่มันไม่หายครับ ใครรู้ช่วยหน่อยครับ

อยู่ตรง ตั้งค่า > การพิสูจน์อักษร มันจะมีปุ่ม ตัวเลือกการแก้ไขอัตโนมัติ

55
มีตาราง A และตาราง ฺB เหมือนกัน แต่ตาราง B ขาดรายการบิลที่ป้อนในเดือนมีนาคม 63(date_sale) ทั้งเดือน เราจะใช้ query แบบ append ได้ไหมครับ และ criteria จะระบุช่วงเดือนอย่างไร?

ใช้Append ได้ครับแต่เงื่อนไขก็คือ ที่ Field date_sale ของตาราง A
โดยใช้การระบุช่วงเดือนโดยใช้ Between

สมมุติชื่อฟอร์ม ชื่อ FormName
มี textbox 2 ตัวชื่อ DateStart และ DateEnd เพื่อใช้ในการระบุวันที่เริ่มต้น และวันที่สิ้นสุด

สร้างปุ่มขึ้นมา 1 ปุ่ม ใส่โค้ดนี้เข้าไป

Dim strSQL As String
strSQL = "INSERT INTO TableB SELECT TableA.* FROM TableA  WHERE TableA.date_sale Between [forms]![FormName]![DateStart] And [forms]![FormName]![DateEnd];"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True

56
อ้างถึง
เจอว่าถ้าเราไม่เคลียร์ค่าใน รหัสงาน หรือ ชื่องาน คิวรี่ใน subForm มันทำงานไม่ได้ 
การแสดงข้อมูลที่ผมทำให้ไปตอนแรกคล้ายๆกับการเลือก จังหวัด อำเภอ ตำบล ซึ่งข้อมูลจะเกี่ยวเนื่องกันลงมาเรื่อยๆครับ
บางครั้งที่คิวรี่ไม่ยอมแสดงข้อมูลก็เพราะว่า ข้อมูลจากส่วนบนลงมาไม่อยู่ในกลุ่มเดียวกัน

อ้างถึง
สลับการเคลียร์ค่าระหว่างรหัสงาน กับ ชื่อ งาน คิดว่า เมื่อตอนเราสั่งคลิกบน คอมโบบ็อกซ์
รหัสงาน เสร็จให้คาไว้อยู่ ฟอร์มย่อยแสดงข้อมูล ยังไม่เคลียร์ค่าบนคอมโบบ็อกซ์ combobox jc

ใช้ Events Got_Focus ได้เลยครับ เมื่อ Cersor โฟกัสที่คอมโบบ๊อกไหนEvents ก็จะทำงาน

อ้างถึง
พอเราคลิกเลือก ชื่องาน comboBox jn ก็อยากให้ไปเคลียร์ค่า combobox jc ก่อน แล้วค่อยไปเรียกคิวรี่มาแสดง
ถ้าเราเคลียค่าของ combobox jc ก็แสดงว่า เราต้องการแสดงผลของ ชื่องานที่เราเลือก โดยไม่สนใจว่ารหัสงานอะไรใช่หรือไม่
ถ้าใช้แก้โค้ดตามด้านล่างได้เลย

แก้โค้ดเป็นแบบนี้
โค๊ด: [Select]
Private Sub jc_AfterUpdate()
MultiFilter
End Sub
Private Sub jn_AfterUpdate()
MultiFilter
End Sub
Private Sub jc_GotFocus()
Me.jn.Value = Null
End Sub
Private Sub jn_GotFocus()
Me.jc.Value = Null
End Sub
Private Sub MultiFilter()
Dim sql As String
 sql = "SELECT * FROM [Qry_Sub_F1S1] WHERE [group] Like '" & Nz(Me.gr, "*") & "' AND [Jobcode] Like '" & Nz(Me.jc, "*") & "' AND [jobname] Like '" & Nz(Me.jn, "*") & "'"
 Me.F1S1.Form.RecordSource = sql
End Sub

57
ขั้นแรก backup โปรแกรมตัวเดิมไว้ก่อน

วิธีแรก ลองเช็คการกำหนด reference โดยเข้าไปที่
ที่มุมมองออกแบบ กด Alt + F11 เพื่อเข้าไปในโหมดเขียนโค้ด
ที่ Tab ด้านบนหาคำว่า TOOL  >>>> reference
ตรงในส่วนของ Available reference:
ให้สังเกตุว่า มีตัวไหนที่มีคำว่า (MISSING) อยู่หรือไม่ ถ้ามีให้ติ๊กออกไป
แล้วกด OK ปิดโปรแกรมลองเปิดมาใหม่

วิธีที่สอง เช็คการกำหนด Microsoft Office XX.0 Object Library
สังเกตุที่ Available reference: เหมือนเดิมของท่าน ใช้ icrosoft Office อะไร ครับ ถ้า 2016 ใช้ 16.0  ถ้าตำกว่าก็ลองเลือก Microsoft Office Object Library เวอร์ชั่นต่ำลงมาดูครับ

หรือ ดาวน์โหลด .DLL ตัวที่หายไปมาวางในเครื่อง
LINKDownLoad https://www.dllme.com/getfile.php?file=11630&id=b8d53c80870eaef6758b66f9a0a0d6cd link
 โดยตำแหน่งก็ประมาณนี้ แล้วแต่โดยว่าวินโดร์กี่บิท ลองค้นหา ตำแหน่งที่มีโฟลเดอร์
 microsoft shared\OFFICEXX XX คือเลขรุ่น

C:/program files (x86)\common files\microsoft shared\OFFICEXX คือเลขรุ่น

อย่างของผม Office 2010 Dll จะอยู่ที่ C:\Program Files\Microsoft Office\OfficeXX

58
ลองดูครับ
โค้ดแก้เป็นแบบนี้นะครับ ที่ combobox ทั้งสามตัว

โค๊ด: [Select]
Private Sub Combo143_AfterUpdate()
MultiFilter
End Sub
Private Sub Combo150_AfterUpdate()
MultiFilter
End Sub
Private Sub Combo181_AfterUpdate()
MultiFilter
End Sub
Private Sub MultiFilter()
Dim sql As String
 sql = "SELECT * FROM [Qry_Sub_F1S1] WHERE [group] Like '" & Nz(Me.Combo150, "*") & "' AND [Jobcode] Like '" & Nz(Me.Combo143, "*") & "' AND [jobname] Like '" & Nz(Me.Combo181, "*") & "'"
 Me.F1S1.Form.RecordSource = sql
End Sub

ที่จริงถ้าจะให้สมบูรณ์ขึ้นควรจะต้องกำหนด ให้เมื่อเลือก Comboตัวแรกแล้ว ตัวต่อไปให้แสดงความตัวแรก และเมื่อเลือกตัวที่ 3 ก็ให้แสดงข้อมูลเฉพาะที่กำหนดไว้ใน คอมโบแรกกับคอมโบทีสอง
แต่ไม่ได้ทำให้ดูเพราะข้อมูลยังไม่ครบถ้วนเช่น AssignmentsGroup ไม่มีข้อมูล Field Group ถ้ามีมาครบถ้วนสามารถทำให้ได้ครับ
ส่วนการค้นหาหลายเงื่อนไขก็ดูจากตัวอย่างได้เลย



59
ถ้าผมอยากจะพิมพ์ Msgbox เป็นภาษาไทยต้องทำอย่างไรเพิ่มบ้างครับ

ที่หน้าเขียนโค้ด ที่แถบด้านบน หาคำว่า Tool > Options... > กดที่ Tab Editor Format ที่ Font กำหนด ชื่อFont ที่มี วงเล็บข้างหลังเป็น Thai
เช่น Arial Unicode MS (Thai) เป็นต้น

60
PNR
Programer สาย DIY 

>>> ขอสอบถามเพิ่มเติมน่ะครับ ถ้าตำแหน่งผมไม่ครบจะไม่ให้ผ่าน เราต้องเขียน  code เพิ่มเติมยังไงครับผม มือใหม่ครับ

สมมุติเรามี textbox หลักชื่อ textboxName
เวลาแสดง msgbox แล้ว มันจะไป Focus ที่ textbox อื่น
เราจะใช้การสั่งFocus textbox อื่นๆ
เพื่อให้ Cursor กลับมายัง textbox เดิมอีกครั้ง
เพื่อไม่ให้สามารถผ่านไป textbox อื่นได้
ใช้ Event Exit ตัวอย่างโค้ด


Private Sub textboxName_Exit(Cancel As Integer)
If Len(Me.textboxName) = "10" Then
MsgBox "ครบจำนวน"
Me.textboxName.ForeColor = vbBlack

ElseIf Len(Me.textboxName) < 10 Then
MsgBox "เกินจำนวนที่กำหนด"
Me.textboxName.ForeColor = vbRed
Me.textboxETC.SetFocus  'สั่งให้ Cursor ไปโฟกัสที่ textbox อื่น
Me.textboxName.SetFocus 'สั่งให้ Cursor กลับมาที่เดิม
ElseIf Len(Me.textboxName) > 10 Then
MsgBox "เกินจำนวนที่กำหนด"
Me.textboxName.ForeColor = RGB(255, 0, 0)
Me.textboxETC.SetFocus  'สั่งให้ Cursor ไปโฟกัสที่ textbox อื่น
Me.textboxName.SetFocus 'สั่งให้ Cursor กลับมาที่เดิม
End If
End Sub

61
NAVIGATION BOTTON กำหนดเป็น NO

62
ที่การตั้งค่าฟอร์มย่อย ให้ตั้งค่าตามภาพ



ตรงปุ่มนำทาง ครับ

63
Private Sub Command0_Click()
Dim strEvent As String
    strEvent = InputBox("ระบุค่า", "รหัสผ่าน!!!!")
    If StrPtr(strEvent) = 0 Then  'เช็คกรณีกด Cancel
                MsgBox "มีการกด Cancel นะ"
        Exit Sub
                     
    ElseIf strEvent = vbNullString Then 'ใช้เช็คกรณีไม่ได้ระบุข้อมูลแล้วกด OK
        MsgBox ("คุณไม่ได้ระบุค่า!")
        End If

End Sub

ใช้ StrPtr() ในการตรวจสอบการกด Cancel ครับ

64
ถ้าแสดงบนฟอร์มหรือรายงานทำได้ง่ายกว่าครับ
แต่แสดงในคิวรี่โดยตรง ทำยากเหมือนกันผมก็ยังหาวิธีที่ได้ลำดับที่ถูกต้องยังไม่ได้เหมือนกัน

ส่วนแสดงในฟอร์ม
มีแบบนี้อีกวิธีครับ
https://www.thai-access.com/index.php?topic=331.msg1345#msg1345

ส่วนลำดับในรายงานใช้แบบนี้ก็ได้
https://www.thai-access.com/topic_post.asp?CategoryID=1&TopicID=2730


หน้า: 1 2 3 [4] 5 6 7 ... 33