สมัครสมาชิก

แสดงกระทู้

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 ... 5 6 7 [8] 9 10
113
ลอง เข้าไปเช็คตรง

Start >> control panel >> Region >> Administrative tab >> change system locale >> มีคำว่า Beta: Use Unicode UTF-8 for world wide language support" ให้ติ๊ก หรือไม่ ถ้ามีให้ติ๊กออกไป  ถ้าไม่มีเดี่ยวหาวิธีใหม่ครับ

114
ทำไม่ได้ค่ะ
เรา ต้องการให้ขึ้น Record ใหม่ แล้วให้เลขเป็น Autorun แล้วมันไม่ข้ามเลขค่ะ
ปกติถ้าลบ record ทิ้ง เลขที่เป็น Autorun จะรันข้ามไปเรย
Autorun ไม่จำเป็นว่าจะใช้ Datatype แบบ AutoNumber อย่างเดียวครับ ใช้แบบ Number แทนก็ได้เหมือนกัน

โดยเราสามารถใช้การสร้าง การรันตัวเลขไป ตามลำดับได้ โดยใช้ Event ของ ฟอร์มโดยใช้ Function Dmax เพื่อหาค่าสูงสุด นำมา +1 เพื่อให้ได้ลำดับต่อๆไปครับ
ผมจะทำตัวอย่างให้ได้ ลองส่งรูปตัวอย่าง Table รูปตัวอย่างฟอร์มที่ทำอยู่มาดูหน่อยครับ

115
ปุ่มเมนู บ้างปุ่มใช้งานไม่ได้ในหน้าฟอร์ม แต่เป็นถังแถบ ไม่ทราบพอแก้ไขอย่างไรได้บ้าง

ไม่แน่ใจว่าเกิดจากการนำงานไปใช้กับคอมเครื่องอื่นๆ หรือเป็นตอนติดตั้ง office ใหม่ หรือยังไม่ได้เปิดใช้งาน Macro
อ้างถึง
ไม่ทราบพอแก้ไขอย่างไรได้บ้าง
ขั้นตอนแรกลองเช็คการเปิดใข้งาน Trust Center ดูก่อนครับ ว่าถูกจำกัดการทำงาน Macro ไว้หรือเปล่า
วิธีการเช็คดูจากลิ้งนี้เลย
https://www.ugetproject.com/wp/ms-office-access/%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B9%83%E0%B8%AB%E0%B9%89vba%E0%B8%97%E0%B8%B3%E0%B8%87%E0%B8%B2%E0%B8%99.html link

116
ใช่ครับอาจารย์ พอดีไปค้นเจอมาจากเว็บนอกครับเลยเอามาประยุกต์กับเคสนี้  :grin: :grin:

117
ตรง Format ได้กำหนด AutoCenter หรือ จัดกึ่งกลางอัตโนมัติ เป็น ใช่ แล้วหรือยังคับ

118
ห้อง MS Access / : [VBA] การทำ search โดย combobox error
« เมื่อ: 04 ก.ย. 62 , 14:40:08 »
คุณใส่ชื่อ subform ผิด ชื่อ subform ให้เปิดฟอร์มหลักในมุมมองออกแบบ แล้วคลิกเลือก ฟอร์มย่อย ตรงคุณสมบัติ แท๊บ อื่นๆ จะมีชื่อของ subform อยู่ครับ

119
Dirty คือการทำงานใดๆ อยู่ครับ

สมมุติ
If me.dirty then
me.dirty = false
end if

จากโค้ด ถ้า ยังมีการแก้ไข การทำงานใดๆ อยู่ก็สั่งหยุด จากโค้ดนี้ ปกติมันก็จะบันทึกข้อมูลลงตารางแล้วนะครับ
แต่ผมใส่โค้ดบันทึกเข้าไปด้วย ไว้เป็นแนวทางเฉยๆ ครับ

120
ห้อง MS Access / : [VBA] การทำ search โดย combobox error
« เมื่อ: 04 ก.ย. 62 , 14:20:05 »
Combobox อยู่บน Form หลักหรือเปล่าครับ ถ้าใช่ ลองแบบนี้นะครับ

Private Sub cbo_CustomerType_AfterUpdate()
Dim myCustomer As String
myCustomer = "SELECT * FROM Asset_all WHERE (((Asset_all.Status)=[forms]![mainform].[Form]![cbo_CustomerType]));"
Forms![mainform]![Subform].[Form].RecordSource = myCustomer
End Sub

Mainform คือชื่อฟอร์มหลัก
Subform คือชื่อฟอร์มย่อย

121

Private Sub Command477_Click()
me.dirty = false
DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord , , acNewRec
End sub

ลืมใส่ =
ลองดูคับว่าได้ไหม

122
ลองแก้เป็นแบบนี้ครับว่าได้ไหม

Private Sub Command477_Click()
Me.Dirty False
DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord , , acNewRec
End sub

123
Column นั้นเราอ้างอิงมาจากการกำหนด RowSource ของ Combobox ครับ

RowSouce ชื่อตรงนี้นะครับ


Column มาจากนี้ครับ


ให้สังเกตุว่า คอลัมน์ มี 2 อัน โดยกำหนด ID ไว้เป็นคอลัมน์แรก และ รายการเป็นคอลัมน์ที่สอง
โดย การนับคอลัมน์นั้นจะเริ่มนับจาก 0 ไป 1 , 2 , 3 , 4 , 5 , 6 ไปเรื่อยๆ
เราต้องการให้ textbox แสดง รายการหรือList เราเลยกำหนดให้ textbox = Combobox.Column(1) นั้นเอง

124
อ้างถึง
1. ผมต้องการทำเลขบอกลำดับด้านหน้า Record บนคล้าย Continuous Form คล้ายๆกับ Running Sum บน Report จะมีวิธีการทำอย่างไร? (ตามภาพ)

ขั้นตอนที่ 1 สร้าง Module เอา โค้ดนี้ใส่เข้าไป
โค๊ด: [Select]
Public Function RowNum(frm As Form) As Variant
On Error GoTo Err_RowNum
   
    With frm.RecordsetClone
        .Bookmark = frm.Bookmark
        RowNum = .AbsolutePosition + 1
    End With
   
Exit_RowNum:
    Exit Function
   
Err_RowNum:
    If Err.Number <> 3021& Then
        Debug.Print "RowNum() error " & Err.Number & " - " & Err.Description
    End If
    RowNum = Null
    Resume Exit_RowNum
End Function
ขั้นตอนที่ 2 สร้าง textbox ชื่อ No ที่ ControlSource ใส่ ว่า =RowNum([Form])


ลำดับก็จะรันอัตโนมัติครับ


อ้างถึง
2. ผมทำช่องให้กรอกช่วงเวลาที่ต้องการค้นหา Record(Search by Date Rage) เอาไว้ครับ(ตามภาพ)
แก้โค้ดเป็นแบบนี้ดูครับ ใช้การกำหนด Sql แทน แก้ชื่อ Form1 เป็นชื่อฟอร์มของคุณด้วยนะครับ
โค๊ด: [Select]
Sub Search()
Dim Sql As String
 If IsNull(Me.txtDateFrom) Or IsNull(Me.txtDateTo) Then
    MsgBox "Please enter the date range", vbInformation, "Date Range Required"
    Me.txtDateFrom.SetFocus
    Sql = "SELECT * FROM qryTransactions ORDER BY qryTransactions.TransactionsDate;"
        Else
    Sql = "SELECT * FROM qryTransactions  WHERE (((qryTransactions.[TransactionsDate]) Between forms!Form1!txtDateFrom And forms!Form1!txtDateTo)) ORDER BY qryTransactions.TransactionsDate;"       
End If
        Me.Form.RecordSource = Sql       
End Sub

อ้างถึง
3. ผมต้องการให้แสดงผลลัพธ์ทั้งหมดที่ค้นหาได้ ตามภาพด้านบน จะมีแนวทางเขียนโค้ดอย่างไร
ผมสมมัติสร้าง textbox ไว้เก็บจำนวน Record ชื่อ txt_TotalRecordSearch
เวลาเราจะเรียกใช้ก็นำไปรวมกับ คำสั้งค้นหาวันที่ แบบนี้คับ

โค๊ด: [Select]
Sub Search()
Dim Sql As String
Dim FormRecCount  As Long
 If IsNull(Me.txtDateFrom) Or IsNull(Me.txtDateTo) Then
    MsgBox "Please enter the date range", vbInformation, "Date Range Required"
    Me.txtDateFrom.SetFocus
    Sql = "SELECT * FROM qryTransactions ORDER BY qryTransactions.TransactionsDate;"
        Else
    Sql = "SELECT * FROM qryTransactions  WHERE (((qryTransactions.[TransactionsDate]) Between forms!Form1!txtDateFrom And forms!Form1!txtDateTo)) ORDER BY qryTransactions.TransactionsDate;"       
End If
        Me.Form.RecordSource = Sql
        Me.txt_TotalRecordSearch.ControlSource = "=Count(No)"
End Sub

ตัวอย่างด้านล่างนะครับ


125
โค้ดนี้แต่เดิมอาจารย์ pizza_p แนะนำไว้ในกระทู้นี้ครับ

https://www.thai-access.com/index.php?topic=220.msg784

ถ้ามีตัวอย่าง ไฟล์ที่ออกรายงานแบบนั้่นได้ ผมก็จะสามารถแก้ไขให้ได้คับ

126
จุดที่ต้องทำเหมือนกันที่ Combobox คือ

1.การกำหนดเรียงลำดับจาก ID / ชื่อรายการ
โดย ID จะอยู่คอลัมน์แรก แล้วตามด้วย ชื่อรายการที่จะแสดง

2.การกำหนดรูปแบบหรือ Format ของ Combobox ที่เราจะเลือกรายการโดยกำหนด
จำนวนคอลัมน์ = 2
ความกว้างคอลัมน์ = 0ซม.;5ซม.


3.กำหนดการผูกคอลัมน์ไว้ = 1


โค้ดยังคงเป็นแบบเดิมนะครับ ลองแก้ไขตามนี้ดูครับ

หมายเหตุดูตรง แหล่งข้อมูลแถวดีๆนะครับ ต้องเรียงจาก ID ก่อน แล้วตามด้วยรายการ

127
สมมุติว่ามันไม่ยอมเซฟให้เรา ๆ ก็โกงๆมันหน่อยแบบนี้เลยครับ สมมุติ text1 , text2 เป็น default Value

คำสั่งที่ปุ่มเซฟ
Private Sub Save_Click()
If Me.NewRecord Then
Me.Text1 = Me.Text1
Me.Text2 = Me.Text2
DoCmd.RunCommand acCmdSaveRecord
End If
End Sub

128
อ่อคำนำหน้ากับชื่อติดกันตามนั้นเลยครับ

หน้า: 1 ... 5 6 7 [8] 9 10