แสดงกระทู้

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 ... 17 18 19 [20] 21 22 23 ... 46
343
ซับซ้อนดีเหมือนกัน
รออาจารย์ท่านอื่นก่อนนะครับผมยังคิดไม่ออกอิอิ  :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 ผมก็ยังทำไม่เป็น รออาจารย์ท่านอื่น
แต่ถ้าแสดงแบบแยกคิวรี่ และคนละรายงานกันก็พอทำได้
แล้วการระบุ ราคาลด และรหัสสินค้าคุณจะทำอย่างไรครับ

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

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

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

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


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

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

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

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

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

351
เนื่องจาก 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

352
ใช้การกำหนด 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

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

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


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

356

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

357
อ้างถึง
การเพิ่มจำนวน 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


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

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

359
มีตาราง 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

360
อ้างถึง
เจอว่าถ้าเราไม่เคลียร์ค่าใน รหัสงาน หรือ ชื่องาน คิวรี่ใน 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

หน้า: 1 ... 17 18 19 [20] 21 22 23 ... 46