แสดงกระทู้

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 ... 31
1
ขออนุญาตสอบถามผู้รู้ค่ะ
พอดีกำลังทำหน้าล็อกอินใน Access แต่ไปก็อปโค้ดเขามา เพราะหามาจากหลายที่ก็โค้ดเดียวกัน
แล้วเวลากรอก user กับ passwordค่ะ คือเราลองเทสกรอกผิด มันจะอยู่หน้าเดิมรอให้กรอกใหม่ใช่มั้ย ทีนี้เลยปิดฟอร์มล็อกอินไป แต่ตัวที่เรากรอกผิดมันไปแทนที่ข้อมูลในฐานข้อมูลเราค่ะ... อีกกรณีคือมันรอให้กรอกใหม่ใช่มั้ย แต่เราไม่ได้กรอกแล้วกดออก ข้อมูลuser กับpassword ในฐานข้อมูลก็หายเหมือนกัน คิดง่ายๆคือมันเหมือนเราบันทึกข้อมูลประมาณนี้ค่ะ มันเป็นเพราะอะไรคะ ช่วยทีค่ะ :cry:
ฟอร์ม ล๊อกอิน ตรง Control Source ของ textbox ที่กรอก user และ password ไม่ต้องใส่ฟิลล์ ในตาราง user ลงไปครับ
textbox ต้องอยู่ในสถานะ Unbound คือไม่เชื่อม ฟิลล์ใดๆ เลย เราจะใช้ Dlookup หรือการ เปิดเรคคอร์ดเซท มาตรวจสอบครับ

ปล... Textbox User และ Password ไม่ต้องเชื่อมกับข้อมูลในฐาน ปล่อยๆว่างๆไปเลย

2
ลองดูนะครับ
โค้ดแต่ละ listbox ผมจัดไว้เป็นชุดนะครับ
คงไม่ยาก ยังติดตรงส่วนไหนบอกได้

3
อ่อโค้ดที่ผมส่งไปผมกำหนด Pop Up Form = No
                                 Modal = No ครับ โค้ดถึงจะทำงาน

แต้ถ้า Pop Up = Yes ไม่รู้ทำยังไงเหมือนกัน
 :sweat:

แต่ก็พอมีวิธีอื่นๆที่พอจะทำได้เช่นการ ใช้ Event Click ในฟอร์ม ข้อมูลทั้งหมด
เช่นในส่วนของ
FormHeader_Click()
Detail_Click()
Form_Click()
หรืออื่นๆเพิ่มเติมจากนี้
ทั้งสามอีเว้นนี้ ใส่โค้ดไปทั้งสามจุดว่า
DoCmd.Close acForm, "collection"

เมื่อเราคลิ๊กโดยจุดต่างๆเหล่านี้ ฟอร์ม collection ก็จะปิดทันทีครับ

4
ครับพรุ่งนี้จัดให้ครับผม
วันนี้ผมเลิกงานแล้ว

5
มีฟอร์มทั้งหมด 2 ฟอร์มชื่อ "collection","ข้อมูลทั้งหมด" ทั้ง 2 ฟอร์มพนักงานจะเปิดใช้พร้อมกัน
คำถามคือ ปัจจุบันผมใช้งานอยู่หน้าฟอร์ม collection และจะเปลี่ยนไปใช้หน้าฟอร์ม ข้อมูลทั้งหมด อยากให้ ฟอร์ม collection ปิดอัตโนมัติต้องทำยังไงครับ

ที่ฟอร์ม ข้อมูลทั้งหมด ใส่ Event แบบนี้เข้าไปครับ
การทำงานคือเมื่อเราใช้งานอยู่ที่ collectionเมื่อเราไปกดที่  ฟอร์มข้อมูลทั้งหมด
จะทำให้ ฟอร์มข้อมูลทั้งหมด ถูก โฟกัสเราก็สั่งปิดฟอร์ม collection ได้เลย

Private Sub Form_GotFocus()
DoCmd.Close acForm, "collection"
End Sub

6
ส่งFile และ เพิ่มข้อมูลเบื้องต้นในตาราง และฟอร์มนั้นมาครับ (ถ้าไม่ได้ส่วนตัวมาก)
เดี่ยวผมปรับโค้ดให้ใหม่ ดูแล้วโค้ดไม่ได้ยาวอะไรเลยครับ สั้นๆ เอง

7
Ex
รหัสสินค้า          ราคา
  A                    5          บาท
  A                    10        บาท
  A                    15        บาท
อยากให้ query แสดง (ใน query มีแต่ first กับ Last)
รหัสสินค้า          ราคารวมทั้งหมด        ราคาก่อนหน้า     ราคาหลังสุด
  A                        30                      10                  15       


อาจจะมีวิธีดีกว่านี้นะครับ
เท่าที่คิดวิธีได้ก็แบบนี้ คือ หา Last แล้วเอาไปเก็บไว้ แล้วหา Last อีกครั้ง (ใช้ 3 คิวรี่เลย)
1.เมื่อเราสร้างคิวรี่ ได้ Last คือตัวสุดท้ายของ รหัสนั้นมาแล้ว
2.สร้างคิวรี่ใหม่เข้ามาอีกแล้วกำหนดให้ แสดงข้อมูลโดยไม่ให้นำ Last จากข้อ 1 มาแสดง ใช้โค้ด ตรง Criteria ว่า
Not In (select ราคาหลังสุด from [Queryราคาหลังสุด])
เราก็จะได้ราคา ที่เหลืออันอื่นๆ โดยเว้น Last ข้อ 1 ครับ
3.เมื่อได้ข้อ 2 มาแล้วสั่ง Last อีกครั่ง เพื่อหา Last เพิ่มอีกตัว
4.นำมา Join Table กันเพื่อแสดงข้อมูลที่ได้ทั้งหมดครับ



8
อธิบายก่อนนะคะ คือฐานข้อมูลจะเก็บพวกข้อมูลชื่อ - สกุล รหัสประชาชน อายุ วันเกิด ฯ
ทีนี้ปัญหาคือพอทำไปเรื่อยๆ แล้วข้อมูลซ้ำกันเยอะมาก เพราะต้องเก็บข้อมูลเป็นปีๆ ไป
เลยอยากรวมเรคคอร์ดที่เป็นคนๆ เดียวไว้ในเรคคอร์ดเดียวกัน ไม่ทราบว่าพอจะทำได้ไหม

แสดงตัวอย่างข้อมูลที่เก็บไว้ ว่าเก็บอยู่แบบไหน เพื่อจะหาแนวในการทำครับ

9
คือเมื่อ User คีย์ รายละเอียดรายการของที่ลูกค้าสั่ง และ มีรายการลด รวมอยู่ด้วย
เช่นใบเสนอราคารหัส V001 ตามตัวอย่าง
เราก็สร้างคิวรี่เข้ามาเปรียบเทียบ จากรหัสสินค้าที่ มีการปรับเปลี่ยนไปจากเดิม
ก็จะได้ข้อมูลของ ราคาที่ลูกค้าเก่าเคยขอไว้แล้วครับ

ที่ฟอร์ม ลองกรอกรหัสใบเสนอราคา ว่า V001 แล้วกดออกรายงานดูครับ

ปรับใหม่โดยการสร้างรายงาน Sub ครับ
ลองทำตามตัวอย่างที่คุณบอกมา


ตัวอย่างหน้า 1/2




ตัวอย่างหน้า 2/2


10
ซับซ้อนดีเหมือนกัน
รออาจารย์ท่านอื่นก่อนนะครับผมยังคิดไม่ออกอิอิ  :sweat:

เช่น
ใบเสร็จเลขที่ V001
รายงานที่ 1
รายการสินค้า
รหัสใบสั่งซื้อ|รหัสสินค้า|ราคาปกติ|ราคาลด
V001       | P1       |25       |25
V001       | P2       |20       |15
V001       | P3       |15       |15
V001       | P4       |30       |25
V001       | P5       |25       |20

รายงานอันที่ 2
รหัสสินค้า    P5    ราคาลด 20  ของใบเสร็จเลขที่ V001  (head group)
รหัสใบสั่งซื้อ|ราคาลด    (details)
V003       | 20
V003       | 15

รหัสสินค้า    P4    ราคาลด 25  ของใบเสร็จเลขที่ V001  (head group)
รหัสใบสั่งซื้อ|ราคาลด    (details)
V004       | 35
V003       | 30


ถ้าแยกพอทำได้ แต่ถ้าหน้าไปหน้า 2 ผมก็ยังทำไม่เป็น รออาจารย์ท่านอื่น
แต่ถ้าแสดงแบบแยกคิวรี่ และคนละรายงานกันก็พอทำได้
แล้วการระบุ ราคาลด และรหัสสินค้าคุณจะทำอย่างไรครับ

11
เดี่ยวจะลองทำให้ดู
เนื่องจากการเลือก P4 P5 ผมคิดว่าคงไม่ใช่การเลือกแบบตายตัวใช่ไหม
บ้างครั้งอาจจะเลือก P2 P3 หรือ เลือกเพิ่มเติมหลายๆ ตัวผมอาจจะใช้ Listbox ในการเลือกรายการส่วนลด ที่จะแสดงในรายงานด้วยนะครับ
ขอทำตัวอย่างแปป

12
คื่อ จะแสดงยอดขายในแต่ละเดือนใน คิวรี่ ทำยังไงครับ เช่น
เดือนที่แล้วขายได้ เช่น ชื่อของที่ขาย ราคา วันที่ของขายได้ 1/5/63
                  ชื่อของที่ขายได้  ราคา วันที่ขายได้ 2/5/63
เดือนได้ขายได้ เช่น ชื่อของ ราคา วันที่ขายได้ 6/6/63
                       ชื่อของ ราคา วันที่ขายได้ 12/6/3/63

อยากให้แสดงยอดขายแต่งละเดือนขายได้เท่าไรเช่น  ชื่อของที่ขาย ราคา วันที่ของขายได้ 1/5/63
                                                              ชื่อของที่ขายได้  ราคา วันที่ขายได้ 2/5/63

ไม่ค่อยเข้าใจโจทย์ คือคุณต้องการให้แสดง รายละเอียดการขายของแต่ละเดือน โดยแยกเป็นเดือนๆไปใช่หรือไม่
อยากแสดงผลแบบนี้หรือไม่


13
ส่งออกไป excel
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "ชื่อตารางหรือคิวรี่", "ระบุตำแหน่งไฟล์และตั้งชื่อไฟล์ที่Exportออกไป", True, "ชื่อsheetที่ต้องการ"
ตัวอย่าง
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "table1", "E:\Myexport.xls", True, "SheetData1"


นำเข้า จาก Excel to Access

หลักการคล้ายๆ กันครับเปลี่ยนจาก acExport มาเป็น acImport
เช่น
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Importเข้าTableไหน", "ตำแหน่งไฟล์และชื่อไฟล์ที่จะนำเข้า", True
ตัวอย่าง
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "MyTable", "E:\MyImport.xls", True

acSpreadsheetType นั้นลองเช็คดูนะครับ ว่าของท่านใช้ Excel รุ่นไหน

acSpreadsheetTypeExcel8      Microsoft Excel 97 format
acSpreadsheetTypeExcel9      Microsoft Excel 2000 format
acSpreadsheetTypeExcel12      Microsoft Excel 2010 format
acSpreadsheetTypeExcel12Xml   Microsoft Excel 2010/2013/2016 XML format (.xlsx, .xlsm, .xlsb)

14
Private Sub Command0_DblClick(Cancel As Integer)
Dim strSQL As String
strSQL = "INSERT INTO voucher_s1 SELECT voucher_s.* FROM WHERE (((voucher_s1.voucher_s_id)=[ãÊèàÅ¢·ÕèºÔÅ]));"
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
DoCmd.SetWarnings True
End Sub



***ทำไม ติด debug ครับ
voucher_s.* FROM ...... WHERE
หลัง From ต้องมีชื่อตารางหรือคิวรี

15
สามารถทำได้ตรง Form และ Report ครับ มันจะมี Footer สามารถสร้างการคำนวนได้ครับ

16
น่าจะแบบนี้ครับ
โค๊ด: [Select]
Sub FieldNames()
    Dim rst, rstOut, strTable  As Recordset
    Dim f As Field
    Dim SQL, RecordName As String
   
    Set rst = CurrentDb.OpenRecordset("tbTarang1")
    Set rstOut = CurrentDb.OpenRecordset("tbfild1")
        rst.MoveFirst
        Do Until rst.EOF
            RecordName = rst!fname
    Set strTable = CurrentDb.OpenRecordset(RecordName)
            For Each f In strTable.Fields
                rstOut.AddNew
                rstOut![tarang] = RecordName
                rstOut![fild] = f.Name
                rstOut.Update
            Next
        rst.MoveNext
        Loop
    rst.Close: Set rst = Nothing
    rstOut.Close: Set rstOut = Nothing
    strTable.Close: Set strTable = Nothing
End Sub

หน้า: [1] 2 3 4 ... 31