แสดงกระทู้

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 - mtaccess

หน้า: 1 ... 6 7 8 [9] 10
145
ผมลองแล้วดูได้ คุณเปิดดูใน Print Preview หรือเปล่า

ดูใน print preview ข้อมูลแสดงค่ะ แต่ถ้าส่งออกไฟล์เป็น Excel ข้อมูลจะแสดงว่ามีหรือไม่มีไหมคะ

146
โค้ดของคุณคือ

Me.Text23.Text = IIf(Dir(Me.[FilePath]) = "", "ไม่มี", "มี")

ปัญหาคือ
1. คุณใส่ .Text   ตรงนี้ต้องให้เอาออกครับ
2. FilePath มีบางเรคอร์ดที่ไม่มีค่าอะไรเลย 
อย่างนั้นก็ต้องแก้โค้ดเป็น

If Nz(Me.[FilePath], "") = "" Then
   Me.Text23 = "ไม่มี"
ElseIf Dir(Me.[FilePath]) = "" Then
   Me.Text23 = "ไม่มี"
Else
   Me.Text23 = "มี"
End If

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

147
เอาใหม่ ผมบอกผิดไป

- อย่างแรก ในเทเบิลต้องมีฟิลด์ที่เก็บว่าไฟล์รูปของเรคอร์ดนั้นอยู่ที่ไหน สมมุติชื่อฟิลด์ว่า FilePath
- วางฟิลด์ FilePath ลงใน Detail section และกำหนด Visible property เป็น No
- Control Source ของ [มี/ไม่มีรูปถ่าย] ให้เว้นว่างไว้
- ใส่โค้ดข้างล่างนี้ไว้ใน Format event ของ Detail section

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
        Me.[มี/ไม่มีรูปถ่าย] = IIf(Dir(Me.[FilePath]) = "", "ไม่มี", "มี")
End Sub

ยังไม่ได้เหมือนเดิมค่ะ รบกวนอีกครั้งนะคะ


148
- อย่างแรก ในเทเบิลต้องมีฟิลด์ที่เก็บว่าไฟล์รูปของเรคอร์ดนั้นอยู่ที่ไหน สมมุติชื่อฟิลด์ว่า FilePath
- ใส่นิพจน์ไว้ใน Control Source property ของเท็กซ์บ็อกซ์ [มี/ไม่มีรูปถ่าย] เป็น

= IIf(Dir(Me.[FilePath]) = "", "ไม่มี", "มี")  <=== เครื่องหมายเท่ากับที่ด้านหน้า ต้องมีใส่ไว้ด้วย

หมายเหตุ เพื่อลดปัญหาที่อาจเกิดขึ้นได้ เราไม่ควรสร้างชื่อของอะไรก็ตาม เป็นภาษาอื่นนอกจากภาษาอังกฤษ และไม่ควรมีช่องว่างหรืออักขระพิเศษต่างๆในชื่อเช่นกัน



ลองทำตามวิธีแล้วติดให้ใส่ Dir กับ Me ค่ะ ตามไฟล์ที่แนบมา รบกวนแนะนำด้วยค่ะ ขอบคุณค่ะ






149
ขอสอบถามเกี่ยวกับ Report ใน Access ตรวจสอบข้อมูลพนักงานว่ามีไฟล์รูปถ่ายใน Drive ที่เก็บไว้จริงหรือไม่ ถ้ามีรูปให้แสดงข้อความว่า 'มี' ถ้าไม่พบรูปใน Drive ที่เก็บรูปให้แสดงว่า 'ไม่มี' รบกวนแนะนำด้วยค่ะ พร้อมกันนี้ได้แนบไฟล์ตัวอย่างที่ทำไว้มาด้วยค่ะ

ไฟล์รูปพนักงานจะทำการบันทึกเป็นชื่อรหัสพนักงานตามตัวอย่างไฟล์ที่แนบมาค่ะ

150
ทำได้แล้วค่ะ
ใช้คำสั่งนี้ค่ะ
 ((Trim(IIf([title]="MR","นาย",IIf([title]="MISS","นางสาว",IIf([title]="MS","นาง","")))))+''+Trim(Firstname)+' '+Trim(Lastname)) AS Name

ขอบคุณมากๆนะคะสำหรับคำแนะนำ

151
ใช้ IIF สร้างเงื่อนไขก็ได้คับ

เช่น
โค๊ด: [Select]
คำนำหน้าชื่อ: IIf([title]="MR","นาย") & IIf([title]="MISS","นางสาว") & IIf([title]="MRS","นาง")


ลองทำตามแล้วข้อมูลมาแต่ title ค่ะ Query ที่ทำไว้ประมาณนี้ค่ะ

(Trim(Replace([title],"MR","นาย"))+''+Trim(Firstname)+' '+Trim(Lastname)) AS Name

Name จะเท่ากับ คำนำหน้าชื่อสกุล เช่น นายสะกิด บุญธรรม

ต้องใส่ Trim เพราะว่าข้อมูลช่อง title มีช่องว่างค่ะ แล้วต้องนำข้อมูลทั้งสามมาแสดงพร้อมกัน

รบกวนแนะนำด้วยค่ะ
ขอบคุณค่ะ

152
ถ้าเราต้องการ Select data ใน MS Access ในคำสั่ง SQL จาก ฟิลด์ title ใน Table แสดงเป็นภาษาอังกฤษ แต่เราอยากให้แสดงเป็นไทย
เช่น ถ้าเป็น MR แสดงเป็น นาย, MISS แสดงเป็น นางสาว และ MRS แสดงเป็น นาง

ตอนนี้ทำได้เงื่อนไขเดียวคือ MR ตัวอย่าง
(Trim(Replace([title],"MR","นาย"))

รบกวนให้คำแนะนำด้วยค่ะ
ขอบคุณค่ะ

153
Zone มีทั้ง ตัวเลข และ ตัวอักษร ลองใช้วิธีนี้ดูครับ


ทำได้แล้วค่ะ โดยการเพิ่มตรงนี้



ขอขอบพระคุณมากๆนะคะ สำหรับคำแนะนำและวิธีการต่างๆ สุดยอดมากเลยค่ะ

154
Zone มีทั้ง ตัวเลข และ ตัวอักษร ลองใช้วิธีนี้ดูครับ

ลองเอาไปใช้กับโปรแกรมจริงไม่เรียงเหมือนเดิมค่ะ ในหน้ารายงานเป็นแบบนี้



แต่ตอน Query คำสั่ง Select ดูเรียงตามโซน งงเลยค่ะ อิอิ
รบกวนแนะนำด้วยค่ะ

155
ทำได้แล้วค่ะ

ขอขอบคุณ คุณ TTT และ คุณ PNR มากๆด้วยนะคะ ที่ให้ความรู้และแนะนำวิธีการต่างๆ


แต่ติดปัญหาตรงการเรียงจากน้อยไปมากจาก Zone ทำ sort จากน้อยไปมากแล้ว แต่ข้อมูลไม่เรียงตาม Zone ค่ะ พร้อมกันนี้ได้แนบตัวอย่างโปรแกรมมาด้วยค่ะ
รบกวนแนะนำด้วยค่ะ

156
น่าจะแบบนี้ครับ

ขอบคุณมากๆนะคะ เดี๋ยวจะลองทำและรายงานผลค่ะ

157
ถ้าเป็นในรายงานเราสามารถทำ Running Sum ได้เลย โดยการสร้าง Text Box เปล่าๆ ขึ้นมาใหม่ สมมุติชื่อ txtrun แล้วกำหนด Control Source: =1 กำหนดตรง Running Sum: Over All (หรือ Over Group หากสร้าง Group)
เราจะได้เลยที่เรียงลำดับขึ้นมา จากนั้นก็เปลี่ยนเงื่อนไขใน Text Box ที่เรานับเลข 1-40 ใหม่เป็น
=IIf([txtrun] Mod 40=0,40,[txtRun] Mod 40)
อ้างที่ [txtrun] แทนการอ้างที่ [ID] ส่วนจะให้แสดงหรือไม่ก็กำหนดในส่วน Visible เอาว่าจะเป็น Yes หรือ No
ส่วนเรื่องอยากให้หน้าละ 20 เรคคอร์ดก็ปรับส่วนพื้นที่ Detail ของรายงานให้ความสูงได้ 20 เรคคอร์ดกับหน้ากระดาษที่กำหนดไว้ แล้วแก้โค้ดที่ Detail > Event > On Print:
Const Blank_Line = 20 'จากเดิม 40 เป็น 20 แทน ก็น่าจะใช้ได้แล้วครับ
ไฟล์ตัวอย่างแก้ไข


ลองทำตามคำแนะนำได้ข้อมูลตามนี้ค่ะ ข้อมูลเรียงแล้วค่ะ แสดงหน้าละ 20 แล้วค่ะ แต่ยังติดปัญหาตรงช่องว่างที่ต้องแสดงให้ครบ 20 แถวในกรณีที่ข้อมูลมีไม่ครบ
รบกวนแนะนำด้วยค่ะ
หน้าที่ 1
   หน้าที่ 2
   หน้าที่ 3
   หน้าที่ 4


158
ถ้าเป็นในรายงานเราสามารถทำ Running Sum ได้เลย โดยการสร้าง Text Box เปล่าๆ ขึ้นมาใหม่ สมมุติชื่อ txtrun แล้วกำหนด Control Source: =1 กำหนดตรง Running Sum: Over All (หรือ Over Group หากสร้าง Group)
เราจะได้เลยที่เรียงลำดับขึ้นมา จากนั้นก็เปลี่ยนเงื่อนไขใน Text Box ที่เรานับเลข 1-40 ใหม่เป็น
=IIf([txtrun] Mod 40=0,40,[txtRun] Mod 40)
อ้างที่ [txtrun] แทนการอ้างที่ [ID] ส่วนจะให้แสดงหรือไม่ก็กำหนดในส่วน Visible เอาว่าจะเป็น Yes หรือ No
ส่วนเรื่องอยากให้หน้าละ 20 เรคคอร์ดก็ปรับส่วนพื้นที่ Detail ของรายงานให้ความสูงได้ 20 เรคคอร์ดกับหน้ากระดาษที่กำหนดไว้ แล้วแก้โค้ดที่ Detail > Event > On Print:
Const Blank_Line = 20 'จากเดิม 40 เป็น 20 แทน ก็น่าจะใช้ได้แล้วครับ
ไฟล์ตัวอย่างแก้ไข

ขอบคุณมากๆนะคะ เดี๋ยวจะลองทดสอบดูและนำผลมารายงานค่ะ

159
น่าจะเพิ่มผิดตรงไหนสักจุดครับ Inbox มาครับ

ID กำหนด DATA TYPE เป็น text หรือเปล่าครับ
ปกติตรงนี้ผมกำหนดเป็น Number ครับ

ถ้าเป็น Text ใช้ Cint แปลงเป็น ตัวเลขก่อนคับ

ถ้าข้อมูล ID NO เป็น Text ลองใช้การแปลง Text เป็นตัวเลข ก่อน โดยผมสร้าง QryTable1 ขึ้นมาแสดงข้อมูลของ Table1 นะครับ

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

ID เป็น AutoNumber ค่ะ ตัวอย่างโปรแกรมตามไฟล์ที่แนบค่ะ ตอนนี้ติดปัญหาเพิ่มช่องในกรณีที่มีข้อมูลในหน้านั้นไม่ครบ 20 และติดตรงเวลาเลือก ชั่วโมงเป็น 8 ข้อมูลไม่เริ่มรัน 1 ใหม่ รบกวนแนะนำด้วยนะคะ ขอบคุณค่ะ

ขั้นตอนการทดสอบโปรแกรมมาที่หน้านี้ค่ะ
เลือกวันที่ 08/08/2019
เลือกชั่วโมงอบรมมี 40 และ 8


ในกรณีข้อมูลไม่ครบ 20 แถว ต้องการให้แสดงช่องให้ครบ 20 แถวค่ะ


ในกรณีเลือกชั่วโมงอบรมเป็น 8 ข้อมูลไม่เริ่มนับ 1 ค่ะ



160
ใช้การ Running Number Query มาช่วยก็ได้คับ
วิธีทำ 1 สร้างคิวรี่ชื่อ QryID ใส่โค้ดนี้
โค๊ด: [Select]
SELECT (Select count(*) From Table1 as a Where a.ID <= Table1.ID) AS [Running No], Table1.ID AS RID
FROM Table1;
2.ที่ RecordSource ของ Report ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
SELECT Table1.ID, Table1.[Product Name], Table1.Quantity, QryID.[Running No], *
FROM Table1 INNER JOIN QryID ON Table1.ID = QryID.RID;


3.สร้าง Textbox ขึ้นมาอีกอัน เอา Field RunningNo ใส่เข้าไปแล้วซ่อน textbox นี้ไว้นะครับ


4.ที่ textbox txtID ใส่โค้ดเป็นแบบนี้
โค๊ด: [Select]
=IIf([Running No] Mod 40=0,40,[Running No] Mod 40)
เท่านี้ก็จะรันลำดับอย่างถูกต้องแล้วคับ   :grin:


เดี๋ยวจะลองดูนะคะ ได้ผลยังไงจะมารายงานนะคะ ขอบคุณมากๆนะคะ

ได้ลองนำไปใช้กับงานจริง ปรากฏว่าลำดับไม่เรียงจาก 1-40 ค่ะ และในแต่ละหน้าของรายงานต้องการให้แสดงหน้าละ 20 แถวค่ะ


161
ใช้การ Running Number Query มาช่วยก็ได้คับ
วิธีทำ 1 สร้างคิวรี่ชื่อ QryID ใส่โค้ดนี้
โค๊ด: [Select]
SELECT (Select count(*) From Table1 as a Where a.ID <= Table1.ID) AS [Running No], Table1.ID AS RID
FROM Table1;
2.ที่ RecordSource ของ Report ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
SELECT Table1.ID, Table1.[Product Name], Table1.Quantity, QryID.[Running No], *
FROM Table1 INNER JOIN QryID ON Table1.ID = QryID.RID;


3.สร้าง Textbox ขึ้นมาอีกอัน เอา Field RunningNo ใส่เข้าไปแล้วซ่อน textbox นี้ไว้นะครับ


4.ที่ textbox txtID ใส่โค้ดเป็นแบบนี้
โค๊ด: [Select]
=IIf([Running No] Mod 40=0,40,[Running No] Mod 40)
เท่านี้ก็จะรันลำดับอย่างถูกต้องแล้วคับ   :grin:


เดี๋ยวจะลองดูนะคะ ได้ผลยังไงจะมารายงานนะคะ ขอบคุณมากๆนะคะ

162
เรื่องการทำเส้นให้เต็มในรายงานลองอ่านกระทู้นี้ดูนะครับ
https://www.thai-access.com/yeadram_view.php?topic_id=3065&PagePosition=1
ส่วนเรื่องเลขที่ตัดทุก 40 ใช้การเขียนคำสั่งหารสั้นเอาแต่เศษด้วยทำสั่ง Mod ที่เลขลำดับของเรา โดยใช้เงื่อนไข
=IIf([ID] Mod 40=0,40,[ID] Mod 40)
คือหารสั้นเอาแต่เศษด้วย 40 แต่ถ้าเศษเป็น 0 ให้เท่ากัย 40 วิธีนี้ ID ต้องเรียงเลขกันห้ามข้ามนะครับ
ไฟล์ตัวอย่าง

หลังจากทดสอบแล้วติดปัญหาในกรณีที่ถ้ามีการลบข้อมูล ID ใน Table หมายเลขที่รันหายไปเลยค่ะ ตามรูปที่ส่งมา ซึ่งในการใช้งานจริง ID ต้องมีการลบอยู่แล้วค่ะ และข้อมูลจริงมีเยอะ 5000 กว่า Record ขึ้น และก่อนจะปริ้นรายงาน มีการค้นหาด้วยวันที่ด้วยค่ะ





หน้า: 1 ... 6 7 8 [9] 10