แสดงกระทู้

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 2 3 4 [5] 6 7 8 ... 32
73
ปัญหาเกิดจาก คุณไปกำหนด frm_search ที่เป็น subform ให้คุณสมบัติของฟอร์มห้ามแก้ไขคับ


แก้เป็น ใช่ แล้วจะสามารถติ๊กได้คับ
 :grin: :grin:

74
ถ้าแบบนี้ละครับ ถ้าไม่ได้ก็ teamviewer ไปดูให้ก็ได้นะครับ  :cool: :cool:

โค๊ด: [Select]
Private Sub TxtFindDapartment_GotFocus()
Dim strFindName As String
If Not IsNull(Me.Parent.TxtFindName) Then
Me.Parent.TxtFindName = Null
Me.Parent.TxtPicturePath = ""
strFindName = "SELECT * FROM [Personal_ST26] WHERE [MName] = null ;"
Me.Parent.RecordSource = strFindName
End Sub

75
งั้นใช้แบบนี้ครับ ถ้าให้ไปที่ Record  แรกแล้วให้ไปต่อ Record  อันหลัง

Private Sub Btn_Previous_Click()
Me.Recordset.MovePrevious
If Recordset.BOF Then
   Recordset.MoveLast
End If
End Sub

ถ้าRecord จากหลังจนสุด แล้วให้ไปต่อ Record หน้าสุด
Private Sub Btn_Next_Click()
Me.Recordset.MoveNext
If Recordset.EOF Then
   Recordset.MoveFirst
End If
End Sub

76
มีตาราง voucher_sale สร้างฟอร์มรับข้อมูล เมื่อกดบันทึกและ และexit จะใช้คำสั่ง Insert INTO เพื่อส่งข้อมูลฟิลด์ที่เกี่ยวข้องไปไว้ในตารางต่างๆๆ แต่ปัญหาคือเมื่อมีการแก้ไขข้อมูลเน่องจากป้อนผิด เราควรใช้คำสั่งอะไรดีครับ ถ้าไม่ใช่คำสั่ง INSERT INTO (อยากจะให้ไปทับของเก่า ไม่ว่าข้อมูลเก่าจะูกแล้ว หรือผิดแต่แก้ไขแล้ว)
ใช้ Update Query ครับ
โดยอาจจะใช้การอัพเดทข้อมูลโดยอ้างถึง ID ข้อข้อมูลนั้นครับ
เช่น
UPDATE.....
WHERE criteria

77
ไป Record แรกสุด DoCmd.GoToRecord,,acFirst
ไป Record ท้ายสุด docmd.GoToRecord,,acLast ครับ


78
ถ้าแบบนี้ละครับ

โค๊ด: [Select]
Private Sub TxtFindDapartment_GotFocus()
Dim strFindName As String
If Not IsNull(Me.Parent.TxtFindName) Then
Me.Parent.TxtFindName = Null
Me.Parent.TxtPicturePath = ""
strFindName = "SELECT * FROM [Personal_ST26] WHERE [MName] = null ;"
Me.Parent.RecordSource = strFindName
End Sub

79
ขอบคุณครับ ทางออกนี้น่าจะดี  พอดีอยากจะลด report ลงครับ  ตอนนี้ก็ทำอย่างที่ อจ บอกล่ะครับ
ถ้าเป็น Access Version 2007 ขึ้นไป น่าจะใช้โค้ดที่ผมโพสไปได้คับพี่ แต่ถ้าเวอร์ชั่นเก่ากว่าต้องลองให้อาจารย์ท่านอื่นๆ ดูนะครับ

80
attachment คือการผูกไฟล์เข้าไปเลย ไม่น่าจะเหมาะ ถ้ารูปมีจำนวนเยอะครับ (อยู่ที่ว่าจะนำไปใช้ทำอะไร)
ข้อดีคือสะดวก ไฟล์รูปภาพ รวมถึงไฟล์อื่นๆ ที่ใส่เข้าไปนั้นจะผูกติดไปกับ access เลย เหมือนที่อาจารย์ TTT บอก ถ้าผูกไฟล์เยอะ ไฟล์จะใหญ่ขึ้นเรื่อยๆ ครับ และมันจำกัดขนาดของไฟล์ แต่ละไฟล์ต้องมีขนาดไม่เกิน 256 Mb  รวมกันทั้งหมดแล้ว ไม่เกิน 2 GB (เท่ากับขนาดของ Access ที่รองรับได้คับ)

แต่ถ้ามีรูปจำนวนมากครับ ผมว่าใช้การกำหนด path ของรูป แล้วนำมาแสดงน่าจะดีกว่า
ลองปรับตามของอาจารย์ TTT ได้เลยคับ มีการสร้างปุ่ม Add รูปภาพ และกำหนด Path เป็น CurrentProject.Path จะสะดวกถ้ามีการเปลี่ยนชื่อโฟลเดอร์ หรือย้ายตำแหน่งของ โฟลเดอร์ ครับ

81
ผมเอา code จากกระทู้ตอบกลับ #1
DoCmd.OpenReport "Report_Bill", acViewDesign
Reports![report_bill]![ReportLabel].Caption = "ต้นฉบับ"
DoCmd.OpenReport "Report_Bill", acViewNormal

DoCmd.OpenReport "Report_Bill", acViewDesign
Reports![report_bill]![ReportLabel].Caption = "สำเนา"
DoCmd.OpenReport "Report_Bill", acViewNormal



ยังไม่ทันพิมพ์ต้นฉบับ เหลือแสดงใบสุดท้ายเป็นสำเนา  ถ้าเราต้องการให้แสดงหน้าจอ 2 บิลคือต้นฉบับ+สำเนา  แล้วค่อยสั่งพิมพ์จะทำอย่างดีครับ
ผมว่าวิธีง่ายๆ เลยนะครับ
คุณมีรายงาน 1 รายงานแล้ว ทำไมไม่ Copy มาตั้งชื่อใหม่โดยรายละเอียดข้างในเหมือนกันหมดเปลี่ยนแค่หัวของรายงาน

เช่น  1.มีรายงานชื่อ Report_Bill อยู่แล้ว กำหนดหัวว่า  ต้นฉบับ
      2.Copy รายงานนั้นมาวาง ตั้งชื่อ Report_Bill2 กำหนดหัวว่า สำเนา
แล้วกำหนด Event Onclick
DoCmd.OpenReport "Report_Bill", acViewNormal
DoCmd.OpenReport "Report_Bill", acViewReport

DoCmd.OpenReport "Report_Bill2", acViewNormal
DoCmd.OpenReport "Report_Bill2", acViewReport

เท่านี้ก็แสดง 2 หน้าปริ้นได้ ทั้ง 2 อัน ต้นฉบับและสำเนาแล้วคับ

82
ลองแก้เป็น
Option Compare Database
Option Explicit
Public clnClient As New Collection
Function OpenReport2()
    Dim Rpt As Report
    Set Rpt = New Report_report_bill
     Rpt.Visible = True
    Rpt!ReportLabel.Caption = "สำเนา"
    clnClient.Add ITEM:=Rpt, Key:=CStr(Rpt.Hwnd)
    Set Rpt = Nothing
End Function

ไม่รู้ Reference อันไหนไม่มีหรือเปล่า เดี่ยวขอลองติดตั้ง เวอร์ชั้นเก่าทดสอบดูก่อนนะคับ

ถ้ายังไม่ได้  @Line มาครับ เดี่ยวคุยกันเอาให้จนทำได้เลย ส่งไลน์ ID ทางข้อความคับ:cool: :cool:

83
ลองดูครับ ไม่รู้จะใช้กับ 2007 ได้ไหมนะครับลองดู

84
สร้างฟอร์มให้ค้นหาข้อมูลบุคคลากร โดยให้ค้นได้ 2 ทาง เพื่อให้ผู้มาติดต่อใช้งานค้นหา คือ
1.ค้นจากชื่อ เลยสร้างฟอร์มให้มี datasource เป็นตาราง "ข้อมูลส่วนตัว" ใช้ค้นข้อมูลจากชื่อ เป็นฟอร์มหลัก  และ
2.ค้นจากแผนกงาน เลยสร้างเป็น subform ที่มี datasource เป็นตาราง"แผนกงาน" ใช้ค้นข้อมูลจากแผนกงาน เป็นฟอร์มย่อยที่อยู่ในฟอร์มหลัก (ข้อ 1.)
     ทีนี่อยากจะขอให้ช่วย คือ เมื่อผู้ใช้บริการคนแรก มา ใส่ชื่อพนักงาน ค้นหา แล้ว พบ และแสดงข้อมูลมาแล้ว แต่เมื่อผู้ใช้คบริการคนถัดไปมาจะค้นหาจากแผนกงาน แต่ข้อมูลของบุคคลากรคนเก่ายังค้างอยู่ที่หน้าจอทำให้เมื่อค้นจากแผนกงานได้ข้อมูลใหม่มาแล้วแต่หน้าจอฟอร์มหลักยังแสดงข้อมูลที่เกิดจากการค้นหาของคนแรกอยู่ จะล้างข้อมูลที่เกิดจากการค้นหาของคนแรกได้อย่างไรครับ...ขอขอบคุณครับ
ผมสมมุติ textbox ค้นหาจากชื่อว่า txtFindName
           textbox ค้นหาจากแผนกว่า txtFindDepartment
           Form หลักชื่อ FrmMain

ถ้าต้องการให้ล้างค่าที่กรอกไว้ของ txtFindName ออกไป ก็กำหนด Event GotFocus เอาก็ได้ครับเช่น

Private Sub txtFindDepartment_GotFocus()
Forms!frmMain.txtFindName = Null
Forms!frmMain.txtFindName.Requery
Me.txtFindDepartment.Requery
End Sub

ที่ผมสั่ง Forms!frmMain.txtFindName.Requery เผื่อว่าคุณใช้การแสดง การค้นหาโดยใช้ Criteria จาก Query
พอเราสั่ง = null แล้ว Requery ข้อมูลที่แสดงก็จะหายไปครับ

85

ถ้า 1 item สามารถมีได้หลายรูป แนะนำให้สร้าง ความสัมพันธ์ แบบ One to Many ครับ
ตารางจะมี T1 และ T2


T1 เก็บ ItemID , ITEM กำหนด ItemID เป็น Primary Key
T2 เก็บ ItemID , Picture กำหนด ItemID ให้มีค่าซ้ำกันได้

Form ที่จะแสดงใช้การสร้าง ฟอร์มหลักและฟอร์มย่อย
ตามตัวอย่างนี้ครับ




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

ขอบคุณอีกครั้งครับ
กำหนด ข้อมูลในการตางแบบไหนครับ
มากกว่า 1 รูป นี้เก็บข้อมูลแบบไหน เอามาดูหน่อยครับ

87
สร้างปุ่ม command ไว้ที่ toolbar กด click แสดง report_bill ทั้ง ต้นฉบับ กับสำเนา(เพราะไม่ได้ printer หัวเข็มจึงต้องพิมพ์ที่2บิล)

วิธีใหม่ที่ Report 1 อันสามารถปริ้น Caption ได้ทั้ง สำเนา และต้นฉบับ และ การดู Preview Report 1 อันแสดง 2 อย่าง

วิธีการ 1.สร้าง Lable กำหนดชื่อ Lable เช่น ReportLabel ตัวรายงานชื่อ  Report_Bill
        2.ที่ปุ่ม Command Event Onclick ใส่โค้ดไปว่า
โค๊ด: [Select]
Private Sub Command_Click()
DoCmd.OpenReport "Report_Bill", acViewDesign
Reports![report_bill]![ReportLabel].Caption = "ต้นฉบับ"
DoCmd.OpenReport "Report_Bill", acViewNormal

DoCmd.OpenReport "Report_Bill", acViewDesign
Reports![report_bill]![ReportLabel].Caption = "สำเนา"
DoCmd.OpenReport "Report_Bill", acViewNormal
End Sub


ส่วนการแสดงหน้ารายงาน โดยมีรายงานเดียว แสดง ทั้ง 2 แบบ
สมมุติชื่อรายงาน Report_Bill ขั้นตอนดังนี้
1.สร้าง Module ขึ้นมา
ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
Option Compare Database

Option Explicit

Public clnClient As New Collection

Function OpenReport2()

    Dim Report As Report
   
    Set Report = New Report_report_bill
     Report.Visible = True
    Report!ReportLabel.Caption = "สำเนา"
   
   
    clnClient.Add ITEM:=Report, Key:=CStr(Report.Hwnd)
   
    Set Report = Nothing
End Function

2.สร้างปุ่ม Command ขึ้นมา ใส่โค้ดนี้เข้าไป

โค๊ด: [Select]
Private Sub Command14_Click()
DoCmd.OpenReport "Report_Bill", acViewDesign
Reports![report_bill]![ReportLabel].Caption = "ต้นฉบับ"
DoCmd.Save
DoCmd.OpenReport "Report_Bill", acViewPreview
Call OpenReport2
End Sub

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

88
เรียนอาจารย์
       ผมมีตาราง T1 ทีมี ฟิว ITEM=ใช้เก็บชื่อรูป และ Picture=เก็บพาทรูปภาพ ครับ 
       ที่ Form มี Text  ITEM และ Picture หากเรียกข้อมูล Item แล้วจะแสดง Picture ทันที
     
      คือพอแสดงแล้วผมอยากให้เปิดรูปภาพขึ้นมาเลยครับ จะต้องเขียน Code ยังไงครับ
      ปกติมันจะโชว์ Link แล้วต้องกดที่ Link ถึงจะเปิดให้ครับ
คือต้องการจะเปิดภาพ Auto ทันทีทีเรียกชื่อ Item ขึ้นมาถูกครับ

ขอบคุณครับ

คุณมี textbox ชื่อ item และ Picture ในฟอร์มแล้ว
ในตัวอย่างผมใช้เป็น txtitem กัย txtpicture นะครับ
ถ้าอยากแสดงรูปภาพ
ก็ควรมี กรอบรูปภาพ เพื่อใช้แสดงรูปภาพนะครับ


และ ที่แหล่งตัวควบคุมหรือ RecordSource กำหนดไปว่า  =txtpicture (อ้างอิงพาทจาก textbox txtpictureครับ)
ดูจากตัวอย่างแบบที่2

สอบถามเพิ่มเติมครับ การเก็บชื่อรูปกับ เก็บพาทรูปเป็นแบบไหน
  ชื่อรูปเช่น ITEM = 01.jpg  อย่างนี้ไหม เพราะการแสดงรูปได้ต้องมี พาท,ชื่อไฟล์,นามสกุลไฟล์ รวมเข้าด้วยกัน
  ส่วนพาทผมสมมุติ Picture = C:\Documents and Settings\office\My Documents\My Pictures\
หรือแบบนี้            Picture = C:\Documents and Settings\office\My Documents\My Pictures\01.่jpg
เพราะคำสั่งที่จะใช้มันจะไม่เหมือนกัน

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

89
ปกติกรอกข้อมูล เลขบันทึกกับ เลขรับในส่วนแรก มันจะดึงมาใส่ในส่วนที่2 ให้อัตโนมัติเรยค่ะ แต่อันนี้ ค่ามันไม่ดึงลงมาใส่ค่ะ ขึ้นerrorว่า #Size! ในtextbox ไม่ทราบเกิดจากอะไร แล้วมีแนวทางแก้ไขอย่างไรหรอค่ะอาจารย์.    (ขอบคุณล่วงหน้าค่ะอาจารย์)
ขอดูโค้ดปัจจุบันที่ใช้อยู่หน่อยครับ

ลองเพิ่ม =Val(Nz(ตำแหน่งอ้างอิง)) เข้าไปด้วยดูครับว่าหายไหม

ถ้าไม่ได้ ลองเอาโค้ดมาดูหน่อยครับ


90
ห้อง MS Access / : Running Number ใน Query Group By Type
« เมื่อ: 28 เม.ย. 62 , 17:18:02 »
RunningNo.    Price      Type
1                   100        A
2                   120        A
3                   130        A
1                   80          B
2                   90          B
1                   78          C
2                   80          C
3                   90          C
4                  100         C

ไม่ทราบว่า ใน Query แบบนี้ ต้องทำเช่นไรครับผม  :question:

ตามนี้เลยคับ
ผมสมมุติตารางที่ทำชื่อ Table1 นะครับ มีฟิล์ Type กับ Price ตามตัวอย่าง

SELECT T.*, (select count(*) from Table1 where T.Price>=Price and  T.Type=Type) AS RunningNo
FROM Table1 AS T
ORDER BY T.Type, T.Price;

หน้า: 1 2 3 4 [5] 6 7 8 ... 32