แสดงกระทู้

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

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

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

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

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


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




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


3
ซับซ้อนดีเหมือนกัน
รออาจารย์ท่านอื่นก่อนนะครับผมยังคิดไม่ออกอิอิ  :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 ผมก็ยังทำไม่เป็น รออาจารย์ท่านอื่น
แต่ถ้าแสดงแบบแยกคิวรี่ และคนละรายงานกันก็พอทำได้
แล้วการระบุ ราคาลด และรหัสสินค้าคุณจะทำอย่างไรครับ

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

5
ห้อง MS Access / : access แสดงยอดขายแต่ละเดือนทำยังไงครับ
« เมื่อ: เมื่อวานนี้ เวลา 08:40:28 »
คื่อ จะแสดงยอดขายในแต่ละเดือนใน คิวรี่ ทำยังไงครับ เช่น
เดือนที่แล้วขายได้ เช่น ชื่อของที่ขาย ราคา วันที่ของขายได้ 1/5/63
                  ชื่อของที่ขายได้  ราคา วันที่ขายได้ 2/5/63
เดือนได้ขายได้ เช่น ชื่อของ ราคา วันที่ขายได้ 6/6/63
                       ชื่อของ ราคา วันที่ขายได้ 12/6/3/63

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

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


6
ส่งออกไป 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)

7
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 ต้องมีชื่อตารางหรือคิวรี

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

9
น่าจะแบบนี้ครับ
โค๊ด: [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

10
ต้อง Open Record set จากชื่อ FName เลยครับ
แล้วมา Loop เดี่ยวทำให้ครับ

11
เนื่องจาก table A และ Table B อยู่คนละ file.mdb ครับ 
ถ้า Table B เป็น table ที่อยู่ d:\MM.mdb  เราจะอ้างอิงเขียนตรง INSERT INTO table b จะเขียนได้อย่างไรครับ


แบบนี้ครับ
โค๊ด: [Select]
Dim strSQL As String
strSQL = "INSERT INTO TableB IN 'D:\mm.mdb' 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

12
ใช้การกำหนด RowSource ครับ ตัวอย่าง
สมมุติ ชื่อตาราง table1
        ชื่อฟิลล์ที่นำมาแสดงชื่อรายการในคอมโบบ๊อกชื่อ NationalID


Private Sub cbPlantID_AfterUpdate()
Dim SQL As String
If Me.cbPlantID = 5 Then
SQL = "SELECT NationalID  FROM Table1;"
Else
SQL = "SELECT NationalID FROM Table1 WHERE (((PlantID)=[forms]![ชื่อฟอร์มหลัก]![cbPlantID]));"
End If
Forms![ชื่อฟอร์มหลัก]![ชื่อฟอร์มย่อย].Form.cbNationalID.RowSource = SQL
End Sub

13
ถ้าเราต้องการให้แยก 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

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


15
ขอปรับเพิ่มโค้ดนิดหน่อยครับ เปิด 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   

16

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

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