แสดงกระทู้

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 ... 27 28 29 [30] 31 32
523
คือเราใส่ข้อมูลบนฟรอมโดยทำเป็น combobox พอกดปุ่มบันทึก อยากให้แสดง ชื่อ
ที่เราทำได้มันแสดง รหัสประชาชน

เช่น tablename
   มี รหัสประชาชน   ชื่อ
        001           ABC

อยากให้ Msgbox แสดง ชื่อ
มี Combobox ชื่อ ComboboxName ผูกกับคอลัมน์หนึ่งไว้เพื่อจัดเก็บในตาราง คือรหัสประจำตัวประชาชน

กำหนด Msgbox แบบนี้ครับ

Msgbox Me.ComboboxName.Column(1)
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

524
อ้างถึง
เลยใช้คำสั่ง
ให้ไป Setfocus ที่ปุ่ม แล้ว Sendkey {Enter} มันใช้ได้ดีเลยครับ ติดที่มันสั่ง
 Numlock

ใช้ Event  Enter ของปุ่มช่วยก็ได้ครับเช่น
สมมุติปุ่มชื่อ ShowMap
Private Sub ShowMap_Enter()
คำสั่งแสดงแผนที หรือคำสั่งที่ต้องการ
End Sub

ที่ปุ่มที่ต้องการกดก็สั่ง

Private Sub Command1_Click()
Call ShowMap_Enter
End Sub

ถ้าจะทำเงื่อนไขต่อไปเลยแบบไม่ต้องกดปุ่มอื่นๆ ก็ใช้
Call ShowMap_Enter
ได้เลยซึ่งเป็นการประยุกต์ใช้คำสั่งแทนการกด Enter เองได้เลย แบบนี้ทำให้ SendKey ไม่ต้องใช้อีก และไม่ต้องสั่ง setfocus ด้วย
หรือถ้าท่านสั่ง Setfocus ปุ่มShowMap      Event Enter ก็จะทำงานทันทีเช่นกันคับ โดยไม่ต้อง Call อีก
โพสต์นี้ได้รับคำขอบคุณจาก: Un, prajak

525
เพิ่มเติมต่อจากอาจารย์อีกหน่อยนะครับ

สมมุติตารางชื่อ Table1
Field ชื่อ  CusID,CusName,DocNumber,DocAddDate
Textbox ชื่อ txtFindCusID / txtFindCusName /  txtFindDocNum / txtFindDocAddDate
Form ในการค้นหา ชื่อ frmSearchCustomer
โค๊ด: [Select]
Private Sub Command40_Click()
Dim StrFilter1, StrFilter2, StrFilter3, StrFilter4 As String
Dim GroupFilter As String

'กำหนดเงื่อนไขให้กับตัวแปรว่าถ้ามีข้อมูลจะนำ Where Clause นี้มาต่อประโยคใน Sql
If Not IsNull(Me.txtFindCusID) Then
StrFilter1 = "(((Table1.CusID)=[forms]![frmSearchCustomer]![txtFindCusID])"
End If
If Not IsNull(Me.txtFindCusName) Then
StrFilter2 = "(((Table1.CusName)=[forms]![frmSearchCustomer]![txtFindCusName])"
End If
If Not IsNull(Me.txtFindDocNum) Then
StrFilter3 = "(((Table1.DocNumber)=[forms]![frmSearchCustomer]![txtFindDocNum])"
End If
If Not IsNull(Me.txtFindDocAddDate) Then
StrFilter4 = "(((Table1.DocAddDate)=[forms]![frmSearchCustomer]![txtFindDocAddDate])"
End If

'นำเงื่อนไขที่ได้จากด้านบน มาต่อประโยคกัน
GroupFilter = IIf(StrFilter1 = "", "", StrFilter1) & IIf(StrFilter2 = "", "", StrFilter2) & IIf(StrFilter3 = "", "", StrFilter3) & IIf(StrFilter4 = "", "", StrFilter4)

'ใช้ Replace เพื่อใช้ And ต่อเงื่อนไขใน Where Clause
GroupFilter = Replace(GroupFilter, ")(((", ") and ((")

'นำประโยคที่ได้มากำหนด RecordSource
If IsNull(Me.txtFindCusID) And IsNull(Me.txtFindCusName) And IsNull(Me.txtFindDocAddDate) And IsNull(Me.txtFindDocNum) Then
Me.RecordSource = "Select * from table1;"
Else
Me.RecordSource = "Select * from table1 where " & GroupFilter & ");"
End If
End Sub

ข้อดีคือ  สามารถเลือกค้นหาข้อมูลได้ทุก textbox ที่อยากค้นและ เราใช้การสร้าง RecordSource แค่อันเดียว เพราะ Sql ที่ได้มาจากการสร้างเงื่อนไขค้นหาด้านบนไว้หมดแล้ว
โพสต์นี้ได้รับคำขอบคุณจาก: prajak, Eik Q Sang, apirak

526
ใช้ BeforeUpdate เช็คก็ได้คับ

ที่ปุ่มบันทึกใส่
โค๊ด: [Select]
Private Sub CmdSave_Click()
DoCmd.RunCommand acCmdSaveRecord
End Sub

โค๊ด: [Select]
Private Sub Form_BeforeUpdate(Cancel As Integer)
If MsgBox("คุณต้องการบันทึกข้อมูลหรือไม่?", vbQuestion + vbYesNo, "Save Confirmation!!") = vbYes Then
MsgBox ("บันทึกข้อมูลเรียบร้อย!")
Else
Cancel = True
Me.Undo
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

527
ผมลองดูตารางจากไฟล์ตัวอย่างเก่าที่คุณเคยส่งมา ลองไปแก้ตามนี้ดูก่อนครับ
Backup ต้นฉบับไว้ด้วยนะ
1.ลองล้างการจัดรูปแบบ
2.ลองกำหนด Format ของข้อมูลฟิลล์นั้น ตามภาพเพราะอาจจะเกิดจากการกำหนด Format ที่ไม่สอดคล้องกับ access เลยเกิดปัญหานี้ได้


เป็นที่ฟิลล์ไหนลองทำดูครับว่าหายไหม
โพสต์นี้ได้รับคำขอบคุณจาก: Mercury

528
ห้อง MS Access / : รายงาน ยอดรวม Subform Error
« เมื่อ: 25 ก.ย. 62 , 11:51:26 »
แปลงค่า แล้วอ้างอิงตัว Control ดูครับ โดยการอ้างอิงต้องใช้ Reports![ชื่อรายงาน].[ชื่อSub]![ชื่อคอนโทรล] ครับ เช่น
แบบจำนวนเต็ม
=CInt([Reports]![re_Main].[re_sub1]![Text15])

หรือ
แบบทศนิยม
=CDbl([Reports]![re_Main].[re_sub1]![Text15])
โพสต์นี้ได้รับคำขอบคุณจาก: nithiruch

529
ลองดูตัวอย่างนี้ครับ พอดีค้นหาเจอจากเว็บนอก และเพิ่มเติมบางส่วนเช่นเลือกข้อมูลจากตารางพิกัส gps ลูกค้าให้ด้วยคับ
ตัวแผนที่อัพเดทล่าสุด 2019
Credit : Philben




โพสต์นี้ได้รับคำขอบคุณจาก: Un, TTT, nonc31, pitakchan, apirak

530
ตาราง productID ควรตั้งชื่อว่า tblProducts ดีกว่าครับ
ขอดูข้อมูลในตาราง product หน่อย
โพสต์นี้ได้รับคำขอบคุณจาก: sabima

531



ผมได้ลองสร้างระบบ ตอกบัตรของพนักงานในการเข้างาน มาให้ดูเป็นแนวทางคับ
1.ก่อนใช้งานให้ ใส่ รหัส Barcode ของพนักงานแต่ละคน ในตาราง tblEmployee ก่อนนะครับ ผมใส่ไว้ให้ 2 ไอดีคือ 01 และ 02
2.เมื่อเราแสกน Barcode โปรแกรมจะทำการ Enter อัตโนมัติ
3.ระบบจะบันทึกข้อมูลเข้าสู่ตารางทันทีถ้า Barcode นั้นมีอยู่จริง ถ้าไม่มีอยู่จะมีการแจ้งเตือนให้ครับ
4.รายละเอียดชื่อพนักงานและเวลาในการตอกบัตรนั้นจะแสดงขึ้นมาเมื่อแสกน Barcode ครับ และจะหายไปเองเมื่อครบ 5 วินาที
5.ผมได้สร้างนาฬิกา และ แสดงวันที่ เรียลไทม์ ไว้บนฟอร์มด้วย
6.โดยปกติ พนักงานอาจจะเผลอไปแสกน วันนึงหลายๆ ครั้ง แต่ผมได้สร้างคิวรี่ตรวจเช็คเวลาที่แสกนอันแรกสุดของวันมาแสดงให้ครับ
7.มีระบบสถานะแสดงไว้ให้ด้วยกรณีที่ผิดพลาดก็จะมีข้อความแสดงแจ้งเตือนใหักับพนักงานได้ทราบครับ

ลองดูนะครับ ไม่รู้ได้หรือเปล่า
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31, MAKI

532
ใส่เป็นแบบนี้ดูครับ


ตัวอย่าง filter
โค๊ด: [Select]
DoCmd.ApplyFilter , "[แผนก] Like '*" & [Forms]![Manpower]![TxtSearch] & "*'"
หรือ
โค๊ด: [Select]
Me.Filter = "[แผนก] Like '*" & [Forms]![Manpower]![TxtSearch] & "*'"
 Me.FilterOn = True


ถ้าไม่เอาแบบ like ค้นหาตรงตัวไปเลย
โค๊ด: [Select]
DoCmd.ApplyFilter , "[แผนก] =" & [Forms]![Manpower]![TxtSearch]
หรือ
โค๊ด: [Select]
Me.Filter = "[แผนก] =" & [Forms]![Manpower]![TxtSearch]
 Me.FilterOn = True
โพสต์นี้ได้รับคำขอบคุณจาก: Araya

533
ProductID ของสินค้าดูจากตาราง Product ของคุณนะครับ
เช่น If IsNull(Me.ProductID) Then
Me.ProductID = "1KA1"
Me.Product_name = Me.ProductID.Column(1)
Me.UnitPriceD = Me.ProductID.Column(2)


 "1KA1" คือรหัสของ กพ. / หมูสับ / 35 บาท เป็นต้นครับ
PrimaryKey ของคุณคือช่อง Barcode ครับ เวลาจะอ้าง ProductID ก็เอามาจาก Field นี้ได้เลย

โพสต์นี้ได้รับคำขอบคุณจาก: Rotchasit Kraiwong, isuccess

534
ใช้การกำหนด Events ช่วยด้วยก็ได้คับ
สมมุติ textbox สุดท้ายที่กรอกข้อมูลชื่อ Text4 เสร็จ Cursor จะ Focus ที่ ปุ่ม Cmb_Save ทันทีครับ
และ พอครบ 5 วินาที มันจำเรียกใช้ คำสั่งบันทึกจาก  Cmb_Save_Click() ครับ ซึ่งปุ่มเซฟถ้ากดเองก็เซฟได้เหมือนกัน
หรือจะตั้ง 5 วินาทีแล้วบันทึกได้เหมือนกันคับ ตัวอย่างโค้ดด้านล่าง

Private Sub Cmb_Save_Click() 'คำสั่งจากปุ่มบันทึกที่มีอยู่แล้วถ้าเรากดบันทึกก็ได้เหมือนกัน
DoCmd.RunCommand acCmdSaveRecord
End Sub

Private Sub Text4_Exit(Cancel As Integer) เมื่อเสร็จการกรอกการทำงานบน textbox สุดท้าย
IF not isnull(Me.text1) And not isnull(Me.text2) And  not isnull(Me.text3) And  not isnull(Me.text4) Then 'เช็คว่ากรอกครบทุก textbox แล้วหรือไม่
Me.Cmb_Save.SetFocus
Dim OnTime As Date
OnTime = Now()
While DateDiff("s", OnTime, Now) < 6 'น้อยกว่า 6 อันสุดท้ายสุดคือ 5 วินั้นเอง
Wend

Call Cmb_Save_Click 'พอครบเงื่อนไขด้านบนจะเรียกคำสั่งบันทึกมาใช้งานคับ
End if
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: MAKI

535
Error นี้เกิดจาก datatype ของคุณกำหนดเป็น Text ครับ แต่โค้ดที่ผมให้ไปนั้นเป็น Number

เพิ่ม เครื่องหมาย ' อีกนิด Error นี้จะหายไปครับเช่น CusID ของคุณ คือ C01 เป็นสตริง ไม่ใช่ตัวเลข
แก้เป็นแบบนี้
If IsNull(DLookup("deal_price", "tblDeal", "[cus_id]= '" & CusID & "' And [pord_id]= " & [ProD] & "")) Then

Me.Price = DLookup("pord_price", "tblProduct", "product_id= " & ProD)
Else
Me.Price = DLookup("deal_price", "tblDeal", "[cus_id]= '" & CusID & "' And [pord_id]= " & [ProD] & "")
End If


โพสต์นี้ได้รับคำขอบคุณจาก: Tongo

536
มันประมาณนี้ครับ
โค๊ด: [Select]
Dim ProD As String
Dim CusID As String
If Not IsNull(Me.Prod_ID) Then
ProD = Me.Prod_ID
CusID = Forms!frmpos.Form.cus_id
If IsNull(DLookup("deal_price", "tblDeal", "[cus_id]= " & CusID & " And [pord_id]= " & [ProD] & "")) Then
Me.Price = DLookup("pord_price", "tblProduct", "product_id= " & ProD)
Else
Me.Price = DLookup("deal_price", "tblDeal", "[cus_id]= " & CusID & " And [pord_id]= " & [ProD] & "")
End If
End If
ตัวอย่าง คร่าวๆ ครับเผื่อเห็นแนวทาง
โพสต์นี้ได้รับคำขอบคุณจาก: Tongo

537
สร้าง Sub เพื่อไว้เรียกใช้หลายๆ ที่ครับ

สังเกตุว่า Event FormLoad ผมใช้
Call ShowAllRecord เลยเพื่อให้ Record ทั้งหมดแสดง


มันแยกกันถูกแล้วคับ
โพสต์นี้ได้รับคำขอบคุณจาก: PooPae

538
ที่ Event FormLoad ของฟอร์มหลัก ลองเพิ่มแบบนี้เข้าไปคับ

Private Sub Form_Load()
Dim myCustomer As String
myCustomer = "SELECT Asset_all.* FROM Asset_all;"
Forms![Customer search by combobox]![tbl_Customer_Subform1].[Form].RecordSource = myCustomer

End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: PooPae

539
ใช่ครับ     ผมแนบ ภาพที่เป็น ไฟล์ pdf ไว้ด้วยนะครับ (พอดีมือใหม่หัดเขียน ไว้ใช้งานที่ร้านนะครับ)
ลองดูตัวอย่างนี้คับ
โพสต์นี้ได้รับคำขอบคุณจาก: Rotchasit Kraiwong, isuccess

540
ไม่รู้ผมเข้าใจถูกต้องหรือเปล่านะครับ
ความต้องการของคุณคือ อยากสร้างปุ่มชื่ออาหารที่ต้องการเลือกแบบด่วน
โดยเวลากดปุ่มนี้จะแสดงรายการอาหารใน Combobox ของอาหารชื่อนั้นขึ้นมาทันทีใช่หรือไม่
โพสต์นี้ได้รับคำขอบคุณจาก: Rotchasit Kraiwong

หน้า: 1 ... 27 28 29 [30] 31 32