แสดงกระทู้

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 ... 12 13 14 [15] 16 17 18 ... 46
253
งั้นโค้ดน่าจะแบบนี้

If MsgBox("คุณต้องการเพิ่มรายการใช่หรือไม่?", vbExclamation + vbYesNo, "Message Box") = vbYes Then

If IsNull(Me.[01]) And IsNull(Me.[02]) And IsNull(Me.[03]) And IsNull(Me.[04]) And IsNull(Me.[05]) And IsNull(Me.[06]) Then
ElseIf Me.[01] = "0" And Me.[02] = "0" And Me.[03] = "0" And Me.[04] = "0" And Me.[05] = "0" And Me.[06] = "0" Then
    MsgBox "ต้องเลือกข้อมูลอย่างน้อย 1 รายการ", vbCritical, "Message Box"
    Else
   DoCmd.GoToRecord , , acNewRec
   Me.txt_CodeType = ""
End If


Else
DoCmd.SetWarnings True
Me.Undo
Me.Refresh
End If


254
ความต้องการคือ ถ้าเพิ่มข้อมูลใหม่
รายละเอียดสำคัญคือต้องมีข้อมูลในฟิลล์ 01 หรือ 02 หรือ 03 ใช่ไหมครับ
ถ้าไม่มี ข้อมูลพวกนี้ ก็อยากให้ไม่สามารถเพิ่มข้อมูลใหม่ได้ และมีการแจ้งเตือน ใช่ไหม

255
Cabinet - ตู้
Shelf - ชั้น
Seq - ลำดับ

รันเลขตู้นั้นมีแค่ 1/1/1 1/1/2 1/1/3 ไปจนถึง 1/1/N ใช่ไหม
ไม่มี 1/2/1  1/2/2  หรือ 3/1/1 ใช่ไหมครับ



256
ในรายงานต่างๆ ใน Criteria between[ตั้งแต่ วว/ดด/ปป]and[ถึง วว/ดด/ปป] ถ้าจะป้อนโดยพิมพ์ ววดดปป ไม่ต้องลืมป้อน "/" ทำอย่างไรได้ครับ

ถ้าข้อมูลที่จะป้อนโดยพิมพ์ลงไปเป็น ววดดปป
เราสามารถใช้ Right Left Mid ในการแยกค่าได้ครับ เช่น
ที่ criteria มีตัวไว้ระบุวันที่ ตั้งแต่วันที่ คือ begindate
                               และถึงวันที่ คือ Enddate
และแปลงส่วนต่างๆ ให้เป็นวันที่ใช้ Cdate()
Criteria ก็จะได้แบบนี้ครับ

Between CDate(Left([Begindate],2) & "/" & Mid([Begindate],4,2) & "/" & Right([Begindate],2)) And CDate(Left([Enddate],2) & "/" & Mid([Enddate],4,2) & "/" & Right([Enddate],2))

อีกแบบเป็นวิธีง่ายๆ ก็คือ ใช้ Format วันที่อีกฟิลล์หนึ่งแล้วใช้
เช่นมีตารางชื่อ Mytable
    มีฟิลล์วันที่ชื่อ Mydate
ที่คิวรี่กำหนด Criteria ดังนี้
SELECT MyTable.*
FROM MyTable
WHERE (((Format([Mydate],"ddmmyy")) Between CDate([ตั้งแต่วันที่ ววดดปป]) And CDate([ถึงวันที่ ววดดปป])));

257
ลองดูตัวอย่างนี้ครับ
ไม่แน่ใจว่าต้องการแบบนี้ไหมนะครับ
เป็นการสร้าง Head Group
และเขียนโค้ดสร้างการหาผลรวมภายในแต่ละหน้า
If PrintCount = 1 Then curTotal = curTotal + Me.ฟิลล์จำนวนเงิน

สามารถดูผลลัพท์ได้ในมุมมองเหมือนพิมพ์ (Print Preview)

258
ตอนนี้ค่อนข้างมั่นใจแล้วค่ะว่าสาเหตุน่าจะมาจากการที่  textbox ที่ให้คำนวณนั้นเกิดมาจาก การเอา % + ตัวเลขธรรมดาค่ะ เลขทำให้เกิด error นี้ขี้น

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

ถ้าข้อมูลไม่ลับมาก ส่งเข้าข้อความผมมาหน่อยครับ ผมเช็คให้

259
อ้ออ เข้าใจแล้วค่ะ แต่ว่าไม่เกี่ยวกันค่ะ เพราะว่า ตัวโค้ดมีเท่านั้นเลยค่ะ ลองสร้าง textbox อีกตัวขึ้นมาแล้วใส่ค่าที่ทศนิยมเยอะๆลงไป ไม่เกิด error ค่ะ ถ้าเป็นเป็น textbox ตัวอื่น แต่ถึงอย่างนั้นก็ไม่รู้ว่าจะพลิกแพลงแก้ปัญหาอย่างไรดีค่ะ
ต้องดูที่ textbox นั้นแล้วละครับ ว่า มีการคำนวนแบบไหน ตั้งค่าไว้แบบไหน
type mismatch คือ ประเภทหรือชนิดข้อมูลไม่เหมือนกัน

1.Msgbox backmargin_sum_percent
   ต้องการดูว่าค่าเป็นแบบไหน
2.ถ้ากำหนดตัวแปรมาเก็บค่าไว้แล้ว นำไปอัพเดทได้ไหมเช่น
โค๊ด: [Select]
Dim strAAA As String
strAAA = Me.aaa
CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & strAAA & "  WHERE ((([proAssess Detail].proRequest_ID)='" & Me.proRequest_ID & "'))"

3.ลองวิธีแปลงค่าก่อนนำไปอัพเดทในตารางเช่น
Val(Replace(backmargin_sum_percent.Value,"%",""))

4.ผมลองสร้างคิวรี่ SQL ประมาณนี้
โค๊ด: [Select]
CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & Val(Replace([Forms]![Mainform].[SubForm].[Form]![aaa], "%", "")) & " WHERE [proAssess Detail].proRequest_ID = '" & [Forms]![Mainform].[SubForm].[Form]![proRequest_ID] & "'"


260
คือปกติถ้าอยู่ในซัพฟอร์ม จะอ้างอิงแบบนี้
[Forms]![ชื่อฟอร์มหลัก].[ชื่อ subform].Form![ชื่อ textbox]

261
ตอบคำถามนะคะ
1. datatype เป็น double format เป็น percent กำหนด จุดทศนิยม 2 ตำแหน่งค่ะ
2.form ที่คำนวนอยู่ในฟอร์มย่อยอีกทีค่ะ
3. ลองแล้วค่ะ ยังขึ้นเหมือนเดิมค่ะ

datatype ของ proRequest_ID ละครับเป็นแบบไหน จากโค้ดถ้าเป็น text ก็ถูกแต่ถ้าเป็น number ต้องตัด ' ออกไป
ถ้ายังไม่ได้ทักไลน์มาได้เลยครับ

262
1.backmargin_sum_percent ในตาราง Datatype เป็นอะไรครับ ถ้าเป็น text ไม่น่าจะมีปัญหา

2.form ที่คำนวนอยู่ในฟอร์มย่อยไหมครับ

3.ตัดทศนิยมให้เหลือ 2 ตำแหน่ง
   CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & Format(aaa, "#.##") & "  WHERE ((([proAssess Detail].proRequest_ID)='" & Me.proRequest_ID & "'))"


263
ห๊ะ! ไปเห็นได้ไง
อ๊ะ! ผมก็ทำงานที่นี้ไงครับ  :miao:

264
อุ๊ย! อุตส่าห์แอบดูเงียบๆ อยู่มุมห้อง :smile:
แอบไปเห็นโปรแกรมอาจารย์ที่ CCU รพ.สุราษ ด้วยนะครับอาจารย์  :cool:
โปรเจคใหญ่ผมไม่มีเวลาทำแน่ๆ ครับ ผมทำของหน่วยงานอยู่ด้วย
ต้องระดับอาจารย์แล้วครับ
 :miao:

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

หมายเหตุ
ตอนแรกผมนึกว่าเป็นโปรเจคเล็กๆ เลยอยากจะช่วยทำให้ฟรี
แต่ดูแล้ว ต้องระดับอาจารย์ Oddy แล้วละครับ
 :shout:

266
ห้อง MS Access / : รบกวนสอบถามครับ
« เมื่อ: 18 ม.ค. 64 , 12:22:25 »
โค้ดปรับใหม่ได้แบบนี้ครับ

โค๊ด: [Select]
Dim F As FileDialog
 Set F = Application.FileDialog(msoFileDialogFilePicker)
        F.AllowMultiSelect = False
        F.InitialFileName = "D:\Work\"
If F.Show Then
      Me.txtFolderPath = F.SelectedItems(1)
End If
Set F = Nothing

โดยต้องเพิ่มในส่วนของ Reference ใส่ตัว
Microsoft Office XX Object Libary ไว้ด้วย
โค้ดจะสามารถทำงานได้


267
ห้อง MS Access / : เขตข้อมูล
« เมื่อ: 15 ม.ค. 64 , 15:41:07 »
ดูจากข้อมูลแล้ว น่าจะเกิดปัญหาจริงๆ แหละครับ

ผมเลย DIY โดยสร้างรูปแบบรายงาน ไว้บนฟอร์ม
โดยมี SubForm ของแต่ละตัว จะนำคิวรี่แต่ละส่วนมาแสดง
Subform ไหนใช้คิวรี่ไหนก็เลือกฟิลล์ของคิวรี่นั้นลงมาใน SubForm นั้น
โดยจากข้อมูลผมใช้
คิวรีนำไปรวมตาก1 กับ SubHeadFrm1
คิวรีนำไปรวมพิษณุโลก1 กับ SubHeadFrm2
คิวรีนำไปรวมอุตรดิตถ์1 กับ SubHeadFrm3

Sub ทั้งหมดอยู่ใน FrmMainReport

แล้วเวลาจะแสดงรายงาน ก็สามารถสร้างปุ่มแล้วใช้คำสั่ง
DoCmd.OpenForm "frmMainReport", acPreview
เพื่อแสดงรายงานขึ้นมาได้เลยครับ

ดังตัวอย่างไฟล์ที่ผมแนบกลับไป

268
ห้อง MS Access / : เขตข้อมูล
« เมื่อ: 15 ม.ค. 64 , 14:34:01 »
ดิฉันทำการส่งไปเเล้วค่ะ ได้รับหรือไม่คะ?
ได้รับละครับ แต่เขตข้อมูลทุกอัน blank หมดทุกอันเลย ผมแก้ในส่วนที่ให้เพิ่ม Column ได้ละกันนะครับ
ถ้าเป็นผมๆ ว่า เอาหัวคอลัมน์มาทำเป็น รายการดีกว่าครับ
มันจะได้ไม่เกิน
แบบเรียงต่อลงมาดีกว่าครับ แบบ cross tab
เดี่ยวขอลองดูก่อนนะครับ

269
ห้อง MS Access / : เขตข้อมูล
« เมื่อ: 15 ม.ค. 64 , 11:39:52 »
มีตัวอย่างข้อมูลไหมครับ ไม่จำเป็นต้องเป็นข้อมูลหลักครับ สร้างเลียนแบบมาพอ
เดี่ยวผมสร้างให้ ทั้งสามตารางผมจะนำข้อมูลต่างๆ มาแสดง โดยกำหนด จากวันที่
ดูจากข้อมูลแล้วน่าจะทำได้ แต่มันหลายขั้นตอน ทำเสร็จแล้วเดี่ยวจะอธิบายวิธีการให้อีกที

ถ้าสะดวกส่งไฟล์เข้า Inbox มาได้เลยครับ

270
ห้อง MS Access / : เขตข้อมูล
« เมื่อ: 15 ม.ค. 64 , 11:03:06 »
1.Field มีได้ประมาณ 255 ครับ
2.ทั้งสามตารางมีเขตข้อมูลเท่ากันหรือไม่ และสอดคล้องกันไหม เช่น มีฟิลล์รายการเท่ากัน มีฟิลล์ รวมยอดเหมือนกัน (เพื่อใช้การ Union รวมไว้ด้วยกัน)
3.จากที่ดูตามภาพ แล้ว น่าจะผิดตั้งแต่การ Join Table เลยครับ
ถ้าจำไม่ผิด Field มีได้ประมาณ 255 ครับ
แต่จากการ Join table แล้วอาจจะทำให้เขตข้อมูลเกินไปอีกครับ

ข้อมูลที่จะนำมาแสดงผมคิดว่า ดึงมาเฉพาะที่จะแสดง รายละเอียดรายการ ดีกว่าครับ
ส่วนไหนที่จะหาผลรวม เราสามารถใช้ฟังชั่น ต่างๆ ในการดึงมาแสดง

หน้า: 1 ... 12 13 14 [15] 16 17 18 ... 46