แสดงกระทู้

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 ... 17 18 19 [20] 21
343
ขอบคุณมากค่ะ สำหรับวิธีที่แนะนำมา ลองทำอยู่นานมาก 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

น่าจะประมาณนี้คับ
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, sjs, mookda16, I love movies

344
ส่งไฟล์ตัวอย่างมาให้ดูครับ
ติดปัญหาจริงๆด้วยครับท่านแต่ถ้าจะสร้างดัดแปลงการค้นหาแบบนี้ได้ไหม
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
โพสต์นี้ได้รับคำขอบคุณจาก: prajak, panita

345
ตัวอย่างไฟล์อันใหม่โพสเดิมด้านบนนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

346
จากข้อมูลเทเบิ้ลมีรายละเอียดดังนี้
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  กำหนดเงื่อนไขเพื่อหาผลลัพท์
เมื่อได้ผลลัพท์มาแล้ว จากที่เราจะอัพเดทลงในตารางเดิม ก็สร้างตารางใหม่ขึ้นมาเลย


ตัวอย่างด้านล่างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

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

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

348
ห้อง MS Access / > การ SUM Unbound Textbox บนForm Footer
« เมื่อ: 20 เม.ย. 61 , 17:17:22 »
=DSum("[ชื่อTextboxที่จะคำนวน]","[ชื่อตารางหรือคิวรี่]")
ใช้ Dsum แทนนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Earth

349
มีไฟล์ตัวอย่างไหมครับ
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

350
ห้อง MS Access / > Val กับ Cdbl ใช้ยังงัยครับ
« เมื่อ: 19 เม.ย. 61 , 16:43:54 »
Val  กับ  Cdbl  ใช้ยังงัยครับ

ใช้ในกรณีที่ต้องการเปลี่ยนค่าของ นิพจน์ แปลเป็นค่าที่เฉพาะเจาะจง
Cdbl คือการเปลี่ยน นิพจน์ให้เป็น Double ครับ
ยกตัวอย่าง ผมกำหนด Integet กับ Double เพื่อให้เห็นความแตกต่าง
Dim MyDouble, MyInt
MyDouble = 2345.5678    ' MyDouble แสดงค่าเป็น  Double.
MyInt = CInt(MyDouble)    ' MyInt แสดงค่าเป็น 2346. คือ Integer

ตัวอย่าง Val กำหนดตัวแปร
Dim MyInt, MyVar
MyInt = 1554    ' MyInt คือค่าจำนวนเต็มตัวเลข หรือว่า Integer.
MyVar = CVar(MyInt & "0000")   จะเห็นได้ว่าเราแทนค่าตัวแปร Var = 0000 ออกมา
MyVar จะแสดงผลออกมาดังนี้ 15540000.
ในกรณีที่จะ ใช้ในการคำนวนยกตัวอย่างเชื่อ
มีชื่อมูลตัวเลข ที่เราเก็บไว้ใน Record เป็น Sting
ชื่อ text 1 = 1.5 และ text 2 = 6.1 ผลการรวทที่ได้ กรณี text1+text2 คือ 1.56.1
ซึ่งเมื่อเราต้องการคำนวน แล้วให้แสดงค่าเป็น  Double ต้องกำหนดดังนี้
(CDbl(text1)) + (CDbl(text1)) ผลที่ได้คือ 7.7 นั้นเอง

ยังมีการเปลี่ยนค่าของ นิพจน์ แปลเป็นค่าที่เฉพาะเจาะจง
ซึ่งยังมี อีกหลายรูปแบบด้วยกันดังนี้

CBool  Boolean   สตริงที่ที่ถูกต้องหรือนิพจน์ใด ๆ

CByte  ไบต์  0 ถึง 255

CCur สกุลเงิน -922,337,203,685,477.5808 เพื่อ 922,337,203,685,477.5807

CDate  วันที่  นิพจน์วันที่ที่ถูกต้องใด ๆ

CDbl  Double

CDec  เลขฐานสิบ
+/ 79,228,162,514,264,337,593,543,950,335 สำหรับศูนย์ปรับขนาดตัวเลข นั่นคือ ตัวเลข โดยไม่มีจุดทศนิยม สำหรับตัวเลขที่มีตำแหน่งทศนิยม 28 คือช่วง
+/ 7.9228162514264337593543950335 หมายเลขที่ไม่ใช่ศูนย์เป็นไปได้น้อยที่สุดคือ 0.0000000000000000000000000001

CInt  จำนวนเต็ม  -32768 ถึง 32767 แทนเศษส่วนจะถูกปัดเศษ

CLng ความยาว   -2147483648 เพื่อ 2147483647 แทนเศษส่วนจะถูกปัดเศษ

CSng  เดี่ยว  -3.402823 e 38 ถึง - 1.401298 e-45 สำหรับค่าลบ 1.401298 e-45 ถึง 3.402823 e 38 สำหรับค่าบวก

CStr สตริง ส่งกลับค่าสำหรับ CStr ขึ้นอยู่กับอาร์กิวเมนต์นิพจน์

CVar ตัวแปร ช่วงเดียวกันเป็นคู่สำหรับ numerics ช่วงเดียวกันเป็นสตริงที่สำหรับ numerics ไม่ใช่
โพสต์นี้ได้รับคำขอบคุณจาก: Su, Krathok-man

351
นำไปใว้ในปุ่มสถานะ Click

โค๊ด: [Select]
Me.Filter = "[DateA] Between Forms.FinalOutput.DateFrom And Forms.FinalOutput.DateTo"
Me.FilterOn = True


หรือ จะใช้  DoCmd.ApplyFilter ก็ทำได้ ตัวอย่างตามนี้ครับ
โค๊ด: [Select]
DoCmd.ApplyFilter , "[DateA] Between Forms.FinalOutput.DateFrom And Forms.FinalOutput.DateTo"
ตัวอย่างด้านล่าง
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

352
ไม่ต้องอ้างคำสั่ง form!... แล้วคับ ใส่ชื่อ control ที่ ระบุวันที่ได้เลย
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

353
ขอบคุณครับ คุณ Newbies ผมก็เป็นมือใหม่หัดลองผิดลองถูกเขียนขึ้นมาเอง เลยอาจจะหล่ะหลวมบางจุด
ข้อ 1 , 2 และ 3 ไม่มีจุดไหนที่สามารถลบได้คัรบ ส่วนข้อ 4 และ 5 ผมคงต้องเข้าไปดูอีกทีครับ

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

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

354
สอบถามครับ
ผมทำระบบงานบันทึกด้วย Access มีผู้ใช้งานร่วมกัน 4 คน ทำการบันทึกข้อมูลไปเรื่อย ๆ ปริ้นงานออกมาของแต่ละ Record ปกติ
แต่เมื่อเข้าไปดูที่ฐาน (ผ่านไประยะหนึ่ง) บาง Record ไม่มีอยู่ในฐานครับ หาสามาเหตุไม่ได้ว่าเพราะอะไร
เป็นไปได้ไหมที่ข้อมูลที่เข้าไปบันทึกมันชนกัน ช่วยทีครับ ..... ขอบคุณมากครับ
คำถามมันกว้างไปหน่อย เพราะสาเหตุที่น่าจะเกิดขึ้นได้มีหลายปัจจัยมาก คงต้องดูที่การออกแบบตัวโปรแกรมว่ามีจุดบกพร่องตรงไหน
คงต้องไล่ดูเป็นส่วนๆ
1.ส่วนที่เพิ่มข้อมูลใหม่ลงในฐานข้อมูล ต้องมีระบบดักจับ ตรวจสอบข้อผิดพลาด ระหว่างการเพิ่มข้อมูลเพื่อให้ได้ข้อมูลครบถ้วน
2.ส่วนแก้ไขข้อมูลที่มีอยู่ในฐานข้อมูล  ส่วนนี้มีส่วนไหนที่ผู้ใช้งานอาจจะเข้าไปเพลอกดลบ Record ได้หรือไม่ (ถ้ามีระบบแก้ไข)
3.ส่วนของการลบข้อมูล  (ถ้ามีระบลบข้อมูลได้ โดย User)
4.ส่วนของการจัดระเบียบและดูข้อมูลด้วยวิธีต่างๆ  เช่นสอบถามข้อมูล การใช้งานคิวรี่ อื่นๆ อาจจะมีผลกระทบกับตัวฐานข้อมูล
5.ส่วนของการใช้งานหลายๆคน อาจจะเกิดจากการนำเข้าข้อมูลไม่ครบถ้วน ขาดส่วนไหนไปโดยไม่ตั้งใจ หรืออาจจะลืมบันทึกไปก็มีส่วนเหมือนกันครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Yuth Krab

355
สวัสดีคะ พอดีพึ่งเริ่มจะศีกษาคะ แล้วตอนนี้ึติดปัญหาว่า จะสร้างปุ่มเพิ่ม ลบ แก้ไข
  เมื่อคลิก button แล้วตรฟังก์ตัวนี้ command button wizard  ไม่ขึ้นคะ

ต้อง ตรงเมนูออกแบบ ติ๊กเลือก ใช้ตัวช่วยสร้างตัวควบคุม  ด้วยครับ
มันถึงจะขึ้น Wizard ให้
โพสต์นี้ได้รับคำขอบคุณจาก: saranya

356
มันมีหลายแบบทั้ง Tahoma MS Sans Serif Arial Verdana และอื่นๆ แต่ส่วนตัวผมใช้ Arial  เพราะฟ้อนพวกนี้ มีทุกเครื่อง และใช้ได้ทั้งไทยและอังกฤษครับ เรื่องขนาด แล้วแต่การออกแบบครับ :cool: :grin:
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

357
ห้อง MS Access / > การเพิ่มเงื่อนไข SQL ค่ะ
« เมื่อ: 05 เม.ย. 61 , 18:10:57 »
สร้างคิ่วรี่ใหม่ ใส่ sql ตามนี้
โค๊ด: [Select]
SELECT StockMonthlyOld.ItemID, StockMonthlyOld.Name, StockMonthlyOld.Type, StockMonthlyOld.Date, StockMonthlyOld.QtyReceived, StockMonthlyOld.Task
FROM StockMonthlyOld LEFT JOIN StockMonthlyOld AS StockMonthlyOld_1 ON StockMonthlyOld.ItemID = StockMonthlyOld_1.ItemID
GROUP BY StockMonthlyOld.ItemID, StockMonthlyOld.Name, StockMonthlyOld.Type, StockMonthlyOld.Date, StockMonthlyOld.QtyReceived, StockMonthlyOld.Task
HAVING (((Count(StockMonthlyOld_1.Task))<>0));
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang, Earth

358
ผมได้สร้างตารางการยืมสมุด ซึ่งในตาราง Table1 ประกอบด้วย NameBorrow,DateDeadline ซึ่งผมได้สร้างคิวรี่การยืมเกินกำหนด ชื่อ qryOverdue โดยนำตาราง Table1 มาแสดงในคิวรี่และได้เพิ่มฟิลด์ Overdue: [DateDeadline]-Date()
คำถาม คือ ผมต้องการจะสร้าง Report โดยมี Combo Box ซึ่งมีลิสต์ให้เลือก ระหว่าง ไม่ถึงกำหนดคืน กับ เกินกำหนดคืน จะมีวิธีการอย่างไรบ้างครับ เพื่อให้รีพอตออกมาแบบนี้ครับ ขอบคุณมากครับ

ผมว่าตรง [DateDeadline]-Date()  เปลี่ยนเปนหาว่า เกินกำหนดคืน หรือยังดีกว่านะครับ
ซึ่งเราอาจจะใช้ฟังชั่น IIF เช่น
โค๊ด: [Select]
CheckOverdue: IIf([Datedeadline]>Date(),"ไม่เกินกำหนดคืน","เกินกำหนดคืน")ที่ช่อง Criteria ของ CheckOverdue ดังนี้
โค๊ด: [Select]
[Forms]![Form1]![CheckOverdue]แล้วสร้างฟอร์ม มา 1 form ผมตั้งชื่อว่า Form1 กับ ComboBox ชื่อ CheckOverdue โดย มี List ไม่เกินกำหนดคืน กับ เกินกำหนดคืน
แล้วกด ปุ่ม เพิ่มเปิดรายงานขึ้นมา

โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

359
ให้เช็คการวาง control พวก Combobox textbox หรืออื่นๆ ไว้ที่ ส่วนหัวของฟอร์มหรือเปล่า เพราะถ้าเป็น ฟอร์มแบบ Continuous Forms ข้อมูลต้องอยู่ในส่วนรายละเอียด ห้าม เอา Control ตัวใดไปวางไว้ที่ส่วนหัวของฟอร์ม
เพราะ สาเหตุพวกนี้อาจจะทำให้เกิด error เมื่อ กดลบเรคคอร์ดถัดไปได้
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

360
ผมสร้างฟอร์มกรอกข้อมูลลูกค้าโดยมีปุ่มเพิ่มข้อมูล ซึ่งในฟอร์มนี้มีซับฟอร์มลูกค้า ซึ่งผมต้องการให้ เมื่อกรอกข้อมูลเสร็จ แล้วกดปุ่มเพิ่มข้อมูล
ข้อมูลที่เพิ่งกรอกไปจะมาโชว์ในซับฟอร์มทันที จะมีวิธีไหนอย่างไรบ้างไหมครับ ขอบคุณครับ
ที่คำสั่งต่อท้ายด้วย me.ชื่อของ sub form.requery
โพสต์นี้ได้รับคำขอบคุณจาก: nainumgame, Eik Q Sang

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