แสดงกระทู้

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

หน้า: [1] 2 3 4
1
ส่งตัวอย่างที่ทำไว้ มาให้หน่อยได้ไหมครับ
เดี่ยว เขียนเป็นโค้ดให้ครับ
ผมต้องการดูขั้นตอนการ ทำงานเพื่อแสดงผล

ช่วงนี้ไม่ค่อยได้ตอบด้วย ภาระงานเพิ่มขึ้นครับที่โรงพยาบาลมีผู้ป่วยโควิดเพิ่มมากขึ้นด้วย
งานที่ต้องประสานเลยเยอะขึ้นครับเลยไม่ค่อยได้มาตอบ แต่มีหลายๆท่านช่วยตอบอยู่ครับ

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

2
ลอง Compile / DeCompile ดูหรือยังครับ
ลอง compact and repair ด้วยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

3
Me.rank คืออะไรครับ​ รับค่าจาก​ TextBox​ หรือเปล่า
แล้วตัวแปร​ rank ประกาศเพื่ออะไร
ส่งรูปมาให้ดูดีกว่าครับ​ นึกภาพไม่ออก
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

4
ใน Access ไม่มีความสามารถนี้ครับ
มีเฉพาะในฐานข้อมูลใหญ่ๆ อย่าง Oracle

ขออธิบายให้เข้าใจง่ายๆ ถึงการทำงานที่แตกต่างกันนะครับ
ใน Oracle นั้น เวลาที่เราสั่ง Delete Data นั้น จะเป็นการปิด Record ที่ลบเท่านั้น (ใส่ Time Stamp เอาไว้ด้วย) แต่ข้อมูลยังไม่ถูกลบ จึงสามารถสั่ง Rollback ได้ แต่ก็ต้องแลกมาด้วยการใช้พื้นที่ ที่เพิ่มขึ้นมาเรื่อยๆ
การสั่งลบข้อมูลจริงๆ ของ Oracle ต้องใช้คำสั่ง Pack เพื่อทำการลบข้อมูลออกจริงๆ

ส่วน Access เมื่อเราสั่ง Delete โปรแกรมจะทำการ Pack ให้ทันทีเลย ทำให้ไม่สามารถดึงข้อมูลกลับมาได้
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

5
สมมุติตาราง A ชื่อ Mytable
1.สร้างคิวรี่ใส่ SQL เข้าไป ตั้งชื่อ Q1
SELECT Idnumber, LV  FROM MyTable GROUP BY Idnumber, LV HAVING ((Not (LV) Is Null));

2.สร้างปุ่มขึ้นมา 1 ปุ่ม
ใส่โค้ดนี้เข้าไป
Private Sub Command0_Click()
Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("Mytable", dbOpenDynaset)
   
    rst.MoveFirst
    Do Until rst.EOF
    If IsNull(rst!LV) Or rst!LV = "" Then
    rst.Edit
    rst!LV = DLookup("LV", "Q1", "Idnumber =" & rst!Idnumber & "")
    rst.Update
    End If
       rst.MoveNext
    Loop
   
    rst.Close: Set rst = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

6
มันขยายไม่ได้แล้วจริงๆครับ ผมปรับ width เป็น maximum แล้ว ตอนเปิดฟอร์มจึงแสดงผลได้แค่ครึ่งจอครับ


ที่คุณ UnKnown บอกมาคือไม่ได้กำหนดขนาดฟอร์มใช้ใหญ่เท่าขนาดจอครับ
แต่หมายถึงการกำหนดความละเอียด หรือ pixel ของเครื่องคอมที่จะแสดงบนหน้าจอทีวีมากกว่า
ยิ่งความละเอียดหน้าจอคอมยิ่งมากการแสดงผลที่ จอทีวีก็จะยิ่งใหญ่ขึ้น

และผมลงค้นข้อมูลการกำหนดให้ แสดงผลเต็มหน้าจอ monitor ลองดูจากเว็บไซส์นี้ครับ
มีตัวอย่างโค๊ด และ ไฟล์ access ให้ลองใช้งานและดูการแสดงผลด้วย

https://codedocu.com/Office-365/Access/Basics/vba-Code/Automatically-adjust-Access-forms-to-the-maximum-monitor-size?2505 link
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

7
บันทึก เปิดใหม่ ใช้ไม่ได้แล้วครับ
แต่ถ้าเปิดใหม่มาแล้วสร้าง combo box ใหม่ จะใช้ได้ครับ ทำวนไป

แต่สังเกตว่าเวลาเราพิมพ์ข้อความลงไปแม้ว่าจะพิมพ์ถูกต้องครบทุกตัวอักษร แต่มันก็แจ้งว่าข้อความที่พิมพ์ไม่ตรงถูก ต้องเลือกเท่านั้น
งงจริงครับ -..-



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

8
Access Options > Current Database > Display Document Tabs
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

9
ถ้าหากจะใช้การตัดวันที่ ที่ผ่านมาออกไปแสดงเฉพาะวันที่ปัจจุบันเป็นต้นไปยังไม่เคยทำครับ

แต่ถ้าจะใช้การกำหนดเงื่อนไขว่าถ้าเลือกวันที่ๆผ่านมาแล้วให้แจ้งเตือนและให้ระบุใหม่ก็ลองแบบนี้
สมมุติ textbox เลือกวันที่ ชื่อ txtDatePick

Private Sub txtDatePick_AfterUpdate()
If Me.txtDatePick < Date() Then
MsgBox "ไม่สามารถเลือกวันที่ย้อนหลังได้", vbCritical, "แจ้งเตือน"
Me.Text0 = Null
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

10
ท่านไปจับ Event Before Update ก็ไม่ได้อยู่แล้วครับ
เพราะตัวแปรที่เก็บค่าไว้จะถูกให้รับค่าใหม่ก่อนที่จะได้แสดงผล
ตรงที่ท่านเรียกใช้ NameDocinSu นั้นท่านจะมาใส่ไว้ใน beforupdate ไม่ได้ครับ
ควรจะให้ทำงานที่ event อื่นแล้วค่อยมาเรียกใช้ OldItem ใน BeforeUpdate เอา
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

11
อ้าว ลบข้อมูลออกทำไมอะครับ เผื่อจะมีประโยชน์กับคนอื่นในอนาคต
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

12
ยอดเยี่ยมมากๆครับ  :love:
อาจจะมีวิธีอื่นๆที่ง่ายกว่านี้ แต่วิธีนี้สาย DIY คิดได้แค่นี้ แต่ก็สามารถนำไปใช้งานได้เหมือนกัน
ส่วน Left , Mid , Right
บางคนเขาก็จะใช้ Mid อย่างเดียวเลยก็ได้เหมือนกัน เพราะมันสามารถกำหนดช่วงของการนับได้ทั้งหมดอยู่แล้ว
แต่ผมใช้ทั้งสามแบบ เพื่ออยากให้ได้ศึกษาการใช้ Function เหล่านี้ไปประยุกต์ใช้กับงานอื่นๆ ต่อได้ครับ
ขอบคุณที่ช่วยอธิบายได้ละเอียดมากๆครับ

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

13
ถ้าหมายถึงชื่อฟิลด์คือ Approved, ชื่อ Option Group คือ O, Checkbox Yes ที่ผูกอยู่ภายใน Option Group ตั้งค่าเป็น 1, No ตั้งค่าเป็นค่าอื่นๆที่ไม่ใช่ 1 

แต่ไม่รู้ว่า O คือค่าที่ต้องการอัพเดตลงเรคอร์ด หรือเป็นเงื่อนไขที่เลือกเรคอร์ดที่จะอัพเดต ถ้าเป็นกรณีแรก ก็จะได้โค้ดเป็นลักษณะ
โค๊ด: [Select]
CurrentDB.Execute "update [P] inner join [I] on [P].[ITEM] = [I].[ITEM] set [P].[Approved] = " & iif(Me.O=1, "TRUE", "FALSE") & " where [I].[PK] = xxx", dbFailOnError
ถ้ากรณีที่สอง ก็จะเป็น
โค๊ด: [Select]
CurrentDB.Execute "update [P] inner join [I] on [P].[ITEM] = [I].[ITEM] set [P].[BALQTY] = [I].[FWQTY] - [I].[ISSUEQTY] where [I].[PK] = xxx and Approved = " & iif(Me.O=1, "TRUE", "FALSE") , dbFailOnError
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

14
ห้อง MS Access / : ความเข้าใจ .Tag code vb access
« เมื่อ: 17 ก.ย. 63 , 00:06:50 »
.Tag property คือพื้นที่ว่างๆในคอนโทรลต่างๆที่ให้เราใส่ค่าอะไรลงไปก็ได้ เปรียบเหมือนตัวแปรนึง ไม่มีผลต่อการทำงานหรือคุณสมบัติใดๆต่อตัวคอนโทรลนั้นๆ ความหมายของค่าก็แล้วแต่เราจะกำหนดเอาเอง ในงานที่ผมเคยใช้ ก็เช่นตอนก่อนจะบันทึก ผมก็จะวิ่งอ่านแต่ละคอนโทรลดูว่า .Tag ไหนมีข้อความบ้าง ถ้ามี แต่ผู้ใช้ไม่ได้เป้อนค่าลงคอนโทรลนั้น ก็จะเอาข้อความใน .Tag ไปแสดงเป็นข้อความเตือนให้ผู้ใช้รับรู้ว่าข้อมูลที่ขาดหายไปมีอะไรบ้าง ผมก็จะได้ไม่ต้องมาเขียนโค้ดเช็คทีละคอนโทรล ซึ่งแต่ละฟอร์มก็มีคอนโทรลที่แตกต่างกัน ผมก็จะสามารถเขียนโค้ดเป็น Public Function ที่ทำการเช็คเอาไว้แค่ที่เดียว โค้ดเดียว ก็พอ เช่น ในเท็กซ์บ็อกซ์ Customer Name ผมก็ใส่คำว่า "ชื่อลูกค้า", ในเท็กซ์บ็อกซ์ Purchase Order ก็ใส่คำว่า "เลขที่ใบสั่งซื้อ" เป็นต้น

ส่วนในบรรทัดแรกนั้น เป็นการเช็คว่าถ้า .Tag ไม่มีค่า , แต่จริงๆไม่มีความจำเป็นต้อง & กับ "" เพียงเขียนว่า if txtID.Tag = "" then ก็พอแล้ว
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

15
Make Table Query พอจะมีอ็อปชั่น IN เพื่อสร้างเทเบิลในฐานข้อมูลอื่นได้ครับ
SELECT field1, field2, ... INTO new_table IN "drive:\path\...\file_name.accdb" FROM source_table;

แต่ก็ตามที่คุณ Unknown บอกครับ เราสามารถ JOIN ลิงค์เทเบิลจากฐานข้อมูลอื่น กับ เทเบิลในฐานข้อมูลเราได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

16
ห้อง MS Access / : รวมฟิวส์ Text
« เมื่อ: 31 ส.ค. 63 , 16:03:16 »
เราสามารถที่จะพอทำได้ครับ โดยใช้การกำหนด ประกาศตัวแปรเป็น Public นะครับ
ผมสมมุติ text1 ถึง text3 และ textbox แสดงชื่อ total
เพราะโดยปกติ .Text จะใช้ได้กับ คอนโทรลที่ โฟกัสอยู่เท่านั้น
เราจึงควรสร้างตัวแปรขึ้นมาเก็บค่าไว้ก่อนเพื่อนำไปต่อกับ ตัวแปรต่อๆไป ครับ

ดังตัวอย่างโค้ดนี้

โค๊ด: [Select]
Option Compare Database
Public strText1, strText2, strText3 As Variant

Private Sub Form_Current()
Me.total = strText1 & " " & strText2 & " " & strText3
End Sub

Private Sub Text1_Change()
If Len(Me.Text1.Text) > 0 Then
strText1 = Me.Text1.Text
End If
Me.total = strText1 & " " & strText2 & " " & strText3
End Sub
Private Sub Text2_Change()
If Len(Me.Text2.Text) > 0 Then
strText2 = Me.Text2.Text
End If
Me.total = strText1 & " " & strText2 & " " & strText3
End Sub
Private Sub Text3_Change()
If Len(Me.Text3.Text) > 0 Then
strText3 = Me.Text3.Text
End If
Me.total = strText1 & " " & strText2 & " " & strText3
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown

หน้า: [1] 2 3 4