แสดงกระทู้

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 ... 22 23 24 [25] 26 27 28 29
433
CurrentDb.TableDefs("Table2") ต้องเป็น CurrentDb.TableDefs("Table1") สิครับ

โค้ดที่ให้ไป ไม่มีอะไรเกี่ยวกับการบันทึกลงที่ไหน มีแต่ให้ผลลัพธ์เท่านั้น

434
โค้ดที่ทำการหาข้อความผลลัพธ์ เอาชื่อฟอร์มและเทเบิลที่ถูกต้องมาใส่แทนด้วยครับ

โค๊ด: [Select]
Dim L           As Integer
Dim Tx          As Variant
Dim TxCtrl      As Access.TextBox
Dim Str         As String   ' เก็บข้อความผลลัพธ์

For Each Tx In Split("ITEM ID,NAME,LOT", ",")  ' ลิสท์รายชื่อของเท็กซ์บ็อกซ์ คั่นแต่ละชื่อด้วยเครื่องหมาย "," และจะมีกี่ชื่อก็ได้
    Set TxCtrl = Forms("ชื่อฟอร์ม")(Tx)
    L = CurrentDb.TableDefs("ชื่อเทเบิล")(TxCtrl.ControlSource).Size
    Str = Str & Left$(TxCtrl & Space(255), L)
Next

435
Report Header/Footer Section จะแสดงครั้งเดียว ถ้าแสดงทุกหน้าต้องใช้ Page Header/Footer Section แทนครับ

436
ไม่ต้องไปนั่งไล่ลบทุกตัวที่ขึ้นต้นด้วย tblData หรอกครับ ลบแค่ตัวเดียวก่อนทำ Import ก็เพียงพอแล้ว   โดยที่ถ้าไม่มีเทเบิล tblData มาก่อน หรือว่าลบ tblData ได้ตามปกติ โปรแกรมก็จะ Import ไฟล์ Excel เข้ามา แต่ถ้าลบเทเบิลไม่ได้ ก็จะแสดงข้อผิดพลาดออกมาให้เห็นแทน

On Error Resume Next
DoCmd.DeleteObject acTable, "tblData"
If Err.Number > 0 and Err.Number <> 7874 Then
   Msgbox "ลบเทเบิล tblData ไม่ได้ เกิดข้อผิดพลาดรหัส " & Str$(Err.Number) & " " & Err.Description
   Exit Sub หรือ Exit Function
End If
On Error Goto 0
DoCmd.TransferSpreadsheet acImport  ...  <<< เข้าใจว่านี่คงเป็นคำสั่งเดิมในการนำเข้าไฟล์ Excel


437
ปัญหาคือ เมื่อเราสั่งพิมพ์รายงานเสร็จแล้ว ไม่ว่าจะกี่หน้าในการพิมพ์ 1 ครั้งก็ตาม หรือไม่ว่าจะมีขนาดเล็กกว่ากระดาษจริงแค่ไหนก็ตาม ระบบ(ผมเข้าใจว่าเป็นระบบ Printer Manager ของตัววินโดว์เองเลย)จะสั่งให้ feed กระดาษใบสุดท้ายทิ้งไปอยู่ดี แต่ถ้าสามารถพิมพ์หลายๆหน้าในการสั่งพิมพ์ 1 ครั้ง อย่างนี้อาจพอมีโอกาสทำได้ แต่ก็น่าจะต้องแก้ตัวรายงาน และต้องให้สามารถเลือกได้ว่าจะพิมพ์เอกสารเลขที่อะไรได้บ้าง

438
ห้อง MS Access / > พิมพ์ออกเป็นไฟล์ PDF
« เมื่อ: 11 พ.ค. 61 , 13:09:46 »
ถ้าหมายถึงแต่ละหน้ามาจากแต่ละ Report ต่างกัน ให้นำแต่ละ Report มาใส่เป็น Sub Report ใน Report เปล่าๆสักตัวเหมือนอย่างในรูปที่มี WCH1, WCH2, WCH3 แล้วกำหนด Can Grow และ Show Page Header and Page Footer ของ Sub Report Control เป็น Yes และเพิ่ม Page Break Control คั่นระหว่างแต่ละ Sub Report เพื่อให้ขึ้นหน้าใหม่ทุกครั้งที่พิมพ์ Sub Report ตัวต่อไป ตอนพิมพ์ก็เลือกเครื่องพิมพ์ที่เป็น Pdf Printer ครับ

439
ถ้าลองเปลี่ยนให้มาอ้างอิง Not In ([Forms]![Not_FG]![Type])
แบบนี้แทนได้ไหมคะ
โดยให้เลือกอ้างอิงType ในส่วน Form Detailทั้งหมดแทน (ไม่ใช่แค่เฉพาะที่Record focus)


เพื่ออะไรครับ ในเมื่อข้อมูลจากฟอร์มก็มาจากเทเบิล Not_FG อยู่ดี และเป็นการทำเรื่องง่ายให้เป็นเรื่องยาก และไม่มีใครทำกัน

440
Error Message เหมือนเดิมค่ะ
แต่สงสัยค่ะ ทำไมก่อนเชื่อมตารางNot_FG ถึงไม่เป็นคะ ข้อมูลทั้ง2ฟิลด์มาครบ ถึงแม้อีกฟิวด์จะเป็นTEXT

ถ้าเช็คตามที่ผมบอกไปแล้วยังเป็น อันนี้ไม่ทราบแล้วครับ

441
ถ้ายังมีกรอบแสดง Error Message เหมือนเดิม ก็แปลว่ายังมีข้อผิดพลาดตามที่บอกไปอยู่ ตัวเลขอาจเยอะกว่าที่ Data Type นั้นรองรับได้ แต่ถ้าไม่มีกรอบข้อความขึ้นมาแล้ว ก็แสดงว่าข้อมูลที่มาจาก StockMonthly_Query_2-2 นั้น มันไม่มีจริงๆ

442
ฟิลด์ TotalAmount และ Total (m2) ในเทเบิล Monthly_FG อาจมี Data Type ที่ไม่ใช่ Numeric หรือไม่ก็มีขนาดที่ไม่พอเก็บข้อมูลจากฟิลด์เดียวกันใน StockMonthly_Query_2-2 ครับ

แล้วทำไม Criteria ถึงกลายเป็น Not In (...) ซึ่งต่างจากที่ผมบอกไปเป็น Is Null ?

443
ดับเบิ้ลคลิกที่เส้นเชื่อมโยงระหว่างเทเบิล เลือกตัวเลือกที่บอกว่า "select ALL record from [StockMonthly_Query_2-2]..." แล้วคลิกปุ่ม OK จะเห็นว่าเส้นเชื่อมโยงจะมีหัวลูกศรที่ฝั่งเทเบิล Not_FG จากนั้นให้ดับเบิลคลิกที่ฟิลด์ Type ของ Not_FG มันจะมาแสดงในตารางข้างล่าง ให้ใส่ Criteria ที่คอลัมน์นั้นเป็น Is Null

444
ห้อง MS Access / > Update field in table
« เมื่อ: 02 พ.ค. 61 , 10:33:36 »
DoCmd.SetWarnings False

DoCmd.RunSQL "UPDATE Monthly_FG_Imple_Sum AS M SET M.TOTAL_ActualDay = M.[SumOfSumOfTotal(m2)] + Forms![ชื่อฟอร์ม]!ShippingArea", dbFailOnError

DoCmd.SetWarnings True

445
ห้อง MS Access / > > Update field in table
« เมื่อ: 30 เม.ย. 61 , 19:36:44 »
DoCmd.SetWarnings (0)
...คำสั่งที่ใช้
DoCmd.SetWarnings (1)

TRUE มีค่าเป็น -1 นะครับ ไม่ใช่ 1 แต่ปกติจะเขียนเป็น DoCmd.SetWarnings True หรือ False จะชัดเจนกว่าครับ

446
- ค่า NULL ต้องใช้คำว่า NULL  ไม่ใช่ปล่อยว่างๆ หรือเป็น "" หรือ " "
- ผมเขียน ... หมายถึงข้อความเดิมก่อนหน้าหรือตามหลัง ไม่ใช่ให้ใส่ ...
- ค่าวันที่ที่ใส่ใน SQL ต้องเป็นรูปแบบ #เดือน/วัน/ปีคศ.#

447
ห้อง MS Access / > Update field in table
« เมื่อ: 25 เม.ย. 61 , 20:20:26 »
จากที่บอกมา คุณต้องไม่อัพเดตด้วยตัว Actualday ตรงๆ  เพราะการอ้างถึง Actualday ซึ่งเป็นเท็กซ์บ็อกซ์(หรือจะเป็นคอนโทรลอื่นๆก็ตาม)ในส่วนของ Detail section (ส่วนที่แสดงออกมาในแต่ละบรรทัด) บนฟอร์มที่เป็นแบบ Continuous Form หรือ Datasheet Form จะได้ค่าจากบรรทัด(เรคอร์ด)ปัจจุบันเท่านั้น ซึ่งก็คือบรรทัดที่มีเครื่องหมายลูกศรชี้อยู่ที่ด้านหน้าของบรรทัดนั้น ไม่ใช่ค่าที่เปลี่ยนไปตามแต่ละบรรทัดให้อัตโนมัติอย่างที่คิด ดังนั้นจากการอัพเดตก่อนหน้านี้ จึงได้อัพเดตออกมาเป็นค่าเดียวกันหมด คือ 852

สิ่งที่ต้องทำคือ ต้องอัพเดต TOTAL_ActualDay ด้วยสูตรที่ใช้สร้าง Actualday อีกที ถ้าเข้าใจไม่ผิด ก็จะเป็น SumOfSumOfTotal(m2) + Forms![ชื่อฟอร์ม]!ShippingArea และ ShippingArea จะเป็นค่าเดียวกันทุกบรรทัด

ดังนั้น UPDATE Query ที่ควรจะเป็นก็คือ

DoCmd.RunSQL "UPDATE Monthly_FG_Imple_Sum AS M SET M.TOTAL_ActualDay = M.[SumOfSumOfTotal(m2)] + Forms![ชื่อฟอร์ม]!ShippingArea", dbFailOnError

448
ห้อง MS Access / > Update field in table
« เมื่อ: 25 เม.ย. 61 , 18:32:33 »
1. Total_ActualDay เกิดจากการคำนวนใช่ไหม มีสูตรว่าอย่างไร หรือว่าไม่ได้เกิดจากการคำนวน แต่ดึงมาจากฟิลด์ไหนโดยตรงเลยครับ
2. บนฟอร์ม เอาข้อมูลมาจากตาราง Monthly_FG_Imple_Sum ตรงๆเลยใช่หรือไม่ หรือมาจากคิวรี่ชื่ออะไร
3. เรคอร์ดอะไรบ้างจากตารางหรือคิวรี่ในข้อ 2. ที่จะถูกเลือกมาแสดงบนฟอร์ม ใช้เงื่อนไขอะไร หรือว่าดึงมาแสดงทุกเรคอร์ดเลยครับ

449
ห้อง MS Access / > Update field in table
« เมื่อ: 25 เม.ย. 61 , 17:33:53 »
เนื่องจากคุณอัพเดตโดยตัด WHERE ทิ้ง ก็เท่ากับอัพเดตทุกเรคอร์ดในเทเบิล  ตอนนี้ก็เลยไม่เข้าใจครับ ว่าต้องการอัพเดตฟิลด์อะไร ให้มีค่าเป็นอะไร มาจากไหน  และเลือกเรคอร์ดที่จะอัพเดตด้วยเงื่อนไขอะไร ช่วยเขียนอธิบายให้ละเอียดๆด้วย


450
บอกว่ามีการเชื่อมตาราง 4.. ไปยังตาราง 1.. โดยเรคอร์ดในตาราง 1.. ที่สามารถใช้ได้จะต้องมีค่าในฟิลด์ fgstartcode และ locationstart เดียวกันกับเรคอร์ดในตาราง 4..  ถ้าหากไม่มีที่เหมือนกัน ก็ให้เอามาเฉพาะเรคอร์ดในตาราง 4.. ส่วนฟิลด์ในตาราง 1.. ก็จะให้ค่า NULL แทนทุกฟิลด์

เวลาพิจารณาให้พิจารณาจากตาราง 4.. เป็นตารางเริ่มต้น เพราะเป็นตารางของต้นทางของลูกศร และพิจารณาไปทีละเรคอร์ดครับ

หน้า: 1 ... 22 23 24 [25] 26 27 28 29