แสดงกระทู้

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 - ปิ่นณรงค์

หน้า: 1 ... 24 25 26 [27] 28 29 30 ... 32
469
อ้างถึง
1. Form Purchase order จะต้องเขียนคำสั่งใน combobox.afterupdate() อย่างไรคะ

ผมว่าถ้าต้องการจะหาค่าที่ไม่ได้อยู่ในรายการนั้นใช้ Event NotInList ดีกว่าครับดังในรายการนี้
เป็นคำสั่งที่กำหนดไว้ที่ตัว Combobox ครับ เมื่อไม่มีในรายการให้ แจ้งเตือน ถ้าตอบ Yes ก็จะเปิดฟอร์มที่ต้องการให้เรา
โค๊ด: [Select]
Private Sub ReviewParts_NotInList(NewData As String, Response As Integer)
   
    Dim i As Integer
    Dim Msg As String
 
    If NewData = "" Then Exit Sub
    Msg = "'" & NewData & "' ไม่มีในรายการ" & vbCr & vbCr
    Msg = Msg & "ต้องการเพิ่มรายการใหม่ ?"

    i = MsgBox(Msg, vbQuestion + vbYesNo, "ระบบตรวจสอบ")
    If i = vbYes Then
        DoCmd.OpenForm "frmAddtbl_product", acNormal
        Response = acDataErrAdd
        Else
        Me.ReviewParts.Undo
        Response = acDataErrContinue
               End If               
End Sub
ส่วน
อ้างถึง
2. Form frmaddtbl_product จะต้องกำหนด property อย่างไรบ้างเพื่อให้รับค่าจาก Purchase order แล้วส่งค่ากลับหลังจาก user ปิดฟอร์ม frmaddtbl_product
ผมใช้การทำให้แสดง รายการที่เพิ่มล่าสุดจากฟอร์ม frmAddtbl_product ลงไปในรายการใหม่โดยอัตโนมัติครับ
โค๊ด: [Select]
Private Sub Form_Close()
Dim i As String
Forms.form_main.ReviewParts = Me.ReviewParts
Forms.form_main.ReviewParts.Requery
Forms.form_main.ReviewParts.SetFocus
i = Forms.form_main.ReviewParts.ListCount - 1
Forms.form_main.ReviewParts = Forms.form_main.ReviewParts.ItemData(i)
End Sub

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

470
1 ทำ Union All
2 แล้วทำ Crosstab Query

เป๊ะเลยจารย์  :love:

471
Private Sub SendMail_Click()
Dim App As New Outlook.Application
Dim Email As Outlook.MailItem
Dim fileName As String, today As String
today = Format(Date, "DDMMYYYY")
fileName = Application.CurrentProject.Path & "\Report1_" & today & ".pdf"
DoCmd.OutputTo acReport, "Report1", acFormatPDF, fileName, False

Set Email = App.CreateItem(olMailItem)
With Email
    .Recipients.Add "ใส่อีเมลผู้รับจดหมาย"
    .Subject = "ชื่อเรื่อง"
    .Body = "รายละเอียดเนื้อหา"
    .Attachments.Add fileName
    .Send
End With

MsgBox "ส่ง Email เสร็จแล้ว!", vbInformation, "EMAIL STATUS"

Set Email = Nothing
Set App = Nothing

End Sub

472
เป็นผมจะทำ Union All แล้วเอาผลลัพธ์ไปทำ Crosstab Query ครับ

ปล.พอดีใช้ 2003 เปิด .accdb ไม่ได้
ผมแปลงให้แล้วครับจารย์ 
ผมได้ดูตัวอย่างด้วยครับ
ตัวอย่างด้านล่างครับ

473
งั้นใช้ โปรแกรมเสริมครับโหลดตัว cutepdf Writer มาครับ
Link  http://www.cutepdf.com/download/CuteWriter.exe
ติดตั้งให้เรียบร้อย
พอเรากด Print  เลือกเครื่องปริ้นเป็น CuteWriter ก่อนครับ

จะได้คุณภาพที่เหมือนต้นฉบับ

474


ดูใน Design View ปกติ

ดูใน Print Preview ปกติ

แต่พอแปลงเป็น .PDF คุณภาพของรูปภาพลดลง ต้องตั้งค่าตรงไหนอย่างไรครับ

ตอน Export ติ๊กเลือกตรงนี้หรอยังครับ

475
1.ผมใช้การ UNION All ที่ Date และ ODNo ก่อนว่ามีอะไรบ้าง
2.ในแต่ละคิวรี่ ผมให้ Group By และ Sum Total ไว้เลย
3.เอามา Join กับ GroupDate&ODno  โดยกำหนดว่าถ้า ODno ไหน มีเหมือนกัน ให้แสดงผลรวมออกมา ครับ
วิธีผมอาจจะดูเยอะไป หรือเปล่า พี่อาจจะลองเอาไป ประยุกต์ดูนะครับ เพื่อเจอแบบที่ง่ายกว่า


ผลลัพท์ที่ได้ ครับ


อันนี้ถ้ากรองแค่วันที่ 1 วันเดียว

476
หลายคิวรี่เลย มีตัวอย่างไหมครับ ผมพอจะคิดแนวทางออกละ

477
ขอดูหน้าตา ตรง ribbon ที่เป็นสีเหลือง หน่อยสิครับ
ปกติ ถ้าใช้ Office ตัวใหม่ จะมีแถบสีเหลือแจ้งเตือนการเปิดใช้งาน Macro  ถ้ามีภาพขึ้นมาแบบนี้


เปิด ทั้งหมดตามนี้


ถ้ายังไม่ได้ อาจจะต้องปรับปรุง คำสั่ง Copy และ Paste เพิ่มเติมครับ

478
ห้อง MS Access / > Update field in table
« เมื่อ: 25 เม.ย. 61 , 15:49:30 »
เอา where ออกครับ ถ้าจะอัพเดททั้งหมด
UPDATE ชื่อ table SET field1 = 'value1'

แต่ผมงง โจทย์นะครับ มันต้องกำหนดวัน ด้วยหรือเปล่า
อ้างถึง
โดยในหน้าฟอร์ม ใส่เป็นunbound textbox  ชื่อว่าActualday เพื่อนำค่าที่ได้ไปupdateลงตาราง ของแต่ละวัน

479
แลกเปลี่ยนความรู้กันคับพี่ เจอเคสใหม่ๆเราได้ศึกษาทำกันคับ :yuush:

480
ห้อง MS Access / > > การใช้ Not in
« เมื่อ: 23 เม.ย. 61 , 16:23:29 »
ทั้งสองวิธีด้านบนไม่ได้เลยค่ะ
ลองแบบนี้หน่อยครับได้ไหม ?  Field1 คือชื่อฟิว ที่ต้องการ
โค๊ด: [Select]
WHERE NOT (field1 = "TRACTOR-L" OR field1 = "TRACTOR-M" OR field1 = "TRACTOR-B" OR field1 = "DC-95" OR field1 = "DC-70" OR field1 = null )

481
ขอบคุณมากค่ะ สำหรับวิธีที่แนะนำมา ลองทำอยู่นานมาก 555+

แต่ก็สามารถงมๆ ไปได้แล้วค่ะ

ปัญหาใหม่คือ พอสั่ง print เส้นที่ออกมา บางมาก ค่ะ อยากให้มีความหนาประมาณ 1พ. ต้องกำหนดได้ที่ไหนค่ะ

ขอบคุณอีกครั้งค่ะ

จากคำสั่งเดิมแบบนี้
โค๊ด: [Select]
Private Sub Report_Page()
Me.ScaleMode = 7         'กำหนดให้หน่วยเป็น cm.
Me.Line (0.1, 7.4)-(0.1, 19.6)     'ลากเส้นจากตำแหน่งพิกัด 0.1 cm, 7.4 cm ไปที่พิกัด 0.1 cm, 19.6 cm
Me.Line (1.2, 7.4)-(1.2, 19.6)
Me.Line (3.1, 7.4)-(3.1, 19.6)
Me.Line (10.5, 7.4)-(10.5, 19.6)
Me.Line (12.2, 7.4)-(12.2, 19.6)
Me.Line (14.2, 7.4)-(14.2, 19.6)
Me.Line (16.2, 7.4)-(16.2, 19.6)
Me.Line (18.67, 7.4)-(18.67, 19.6)
Me.Line (0.1, 7.4)-(18.67, 7.4)
Me.Line (0.1, 8.6)-(18.67, 8.6)
Me.Line (0.1, 19.6)-(18.67, 19.6)

End Sub
ใส่เพิ่มเป็นแบบนี้
โค๊ด: [Select]
Private Sub Report_Page()
Me.ScaleMode = 7         'กำหนดให้หน่วยเป็น cm.
Me.DrawStyle = vbSolid
Me.DrawWidth = 5
Me.Line (0.1, 7.4)-(0.1, 19.6)     'ลากเส้นจากตำแหน่งพิกัด 0.1 cm, 7.4 cm ไปที่พิกัด 0.1 cm, 19.6 cm
Me.Line (1.2, 7.4)-(1.2, 19.6)
Me.Line (3.1, 7.4)-(3.1, 19.6)
Me.Line (10.5, 7.4)-(10.5, 19.6)
Me.Line (12.2, 7.4)-(12.2, 19.6)
Me.Line (14.2, 7.4)-(14.2, 19.6)
Me.Line (16.2, 7.4)-(16.2, 19.6)
Me.Line (18.67, 7.4)-(18.67, 19.6)
Me.Line (0.1, 7.4)-(18.67, 7.4)
Me.Line (0.1, 8.6)-(18.67, 8.6)
Me.Line (0.1, 19.6)-(18.67, 19.6)
Me.DrawWidth = 1
End Sub

น่าจะประมาณนี้คับ

482
พอดีมีปัญหาทำการ Query ข้อมูลคะ
ปัญหาที่ว่า พอทำออกมาแล้วข้อมูลที่แสดงไม่ครบคะ
  เช่น ทำการ Query ข้อมูลเพศหญิง ต้องการให้แสดงข้อมูลแต่เพศหญิงทั้งหมด ซึ่งข้อมูลเพศหญิงมีทั้งหมด 10 คน แต่ Query ออกมาแสดงแค่ 6 คน

ไม่ทราบว่าเป็นเพราะอะไร มีวิธีแก้ยังไง

รบกวนด้วยนะคะ......ขอบคุณ

มีตัวอย่างไหมครับ

483
ส่งไฟล์ตัวอย่างมาให้ดูครับ
ติดปัญหาจริงๆด้วยครับท่านแต่ถ้าจะสร้างดัดแปลงการค้นหาแบบนี้ได้ไหม
1.เมื่อได้ Crosstab มาแล้ว ให้ Append มายัง ตารางใหม่ และ กำหนด Form กับตารางใหม่นั้นมันก็จะสามารถค้นหาได้เหมือนกันครับ
โค๊ด: [Select]
Private Sub Command62_Click()
DoCmd.ApplyFilter , "[DateA] Between Forms.FinalOutput.DateFrom And Forms.FinalOutput.DateTo"
End Sub
Private Sub Form_Open(Cancel As Integer)
    DoCmd.SetWarnings False
    DoCmd.RunSQL "DELETE * FROM TblFinalOutput"
    DoCmd.OpenQuery "MakeTblFinalOutput", acViewNormal
    Me.Form.Requery
End Sub

484
ตัวอย่างไฟล์อันใหม่โพสเดิมด้านบนนะครับ

485
จากข้อมูลเทเบิ้ลมีรายละเอียดดังนี้
Code          Status        Final
001                A
001                D
001                D
002                A
003                D
004                P
004                A
005                C
005                D
005                D
ถ้าผมจะคิวรี่โดยมีเงื่อนไขดังนี้
ถ้า ฟิลด์ Code - 001 มี Status A กับ C กับ D ให้อัพเดทในฟิลด์ Final เป็น A
ถ้า ฟิลด์ Code - 001 มี Status A อย่างเดียว ให้อัพเดทในฟิลด์ Final เป็น A
ถ้า ฟิลด์ Code - Code 001 มี Status A กับ D ให้อัพเดทในฟิลด์ Final เป็น A
ถ้า ฟิลด์ Code - 001 มี Status D อย่างเดียว ให้อัพเดทในฟิลด์ Final เป็น D
ถ้า ฟิลด์ Code - Code 001 มี Status C กับ D ให้อัพเดทในฟิลด์ Final เป็น D
ถ้า ฟิลด์ Code - Code 001 มี Status P กับ D ให้อัพเดทในฟิลด์ Final เป็น P

ต้องคิวรี่อย่างไรบ้างครับ ขอบคุณมากครับผม

ลองดูตัวอย่างนี้นะครับ
ผมใช้วิธีสร้าง CrossTab ขึ้นมาก่อนเพื่อ ต้องการดูว่า Field ไหน มีข้อมูลอยู่บ้าง
ต่อไปใช้ IIF Function  กำหนดเงื่อนไขเพื่อหาผลลัพท์
เมื่อได้ผลลัพท์มาแล้ว จากที่เราจะอัพเดทลงในตารางเดิม ก็สร้างตารางใหม่ขึ้นมาเลย


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

486
ห้อง MS Access / > > > การ SUM Unbound Textbox บนForm Footer
« เมื่อ: 20 เม.ย. 61 , 19:05:07 »
ขอบคุณค้าา

=DSum("[ชื่อTextboxที่จะคำนวน]","[ชื่อตารางหรือคิวรี่]")
ใช้ Dsum แทนนะครับ
แต่ การใช้ Dsum ถ้าในกรณีที่มี textbox ที่ Unbound หลายๆ ตัวจะมีปัญหานะครับ
ถ้าเป็นไปได้ textbox ตัวที่ ที่เรากำหนดเป็นค่าเริ่มต้น และกำหนด จำนวนไว้นั้น ผมว่าไปกำหนดในคิวรี่เลยจะดีกว่าครับ
แล้วดึงมาแสดงบน textbox ก็จะสามารถ ใช้ Sum ได้ตามปกติ

หน้า: 1 ... 24 25 26 [27] 28 29 30 ... 32