1
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.
2
ห้อง MS Access / : Text box ตัดคำหลังเครื่องหมาย
« เมื่อ: 13 ธ.ค. 65 , 17:45:44 »
ถ้าโค้ดที่สแกนเป็นรูปแบบเดียวกันหมด แล้วเราต้องการเก็บเฉพาะอักษรที่อยู่หน้าตัว , แรก เป็นรูปแบบๆนี้ตลอดเลยก็ใช้ฟังก์ชั่น Left() กับ Instr() ในการตัดคำได้ครับ โดยใส่โค้ดใน Event > After Update ของตัว TextBox
left("S2201234, A1,1",instr(1,"S2201234, A1,1",",")-1)
แทนค่าด้วยชื่อ TextBox สมมุติชื่อ Text1
left(Me.Text1,instr(1,Me.Text1,",")-1)
อะไรประมาณนี้ครับ
left("S2201234, A1,1",instr(1,"S2201234, A1,1",",")-1)
แทนค่าด้วยชื่อ TextBox สมมุติชื่อ Text1
left(Me.Text1,instr(1,Me.Text1,",")-1)
อะไรประมาณนี้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: ingfahm59
3
ห้อง MS Access / : คำสั่งก๊อปปี้ไฟล์เป็นรูปภาพ
« เมื่อ: 13 ธ.ค. 65 , 17:37:59 »
ผมพอมีโค๊ด Capture และเซฟเป็นไฟล์อยู่ ไว้ผมทำคลิปตัวอย่างให้ดูอาจเป็นแนวทางได้นะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Un
4
ห้อง MS Access / : รบกวนช่วยดู code สำหรับสร้าง link table ให้หน่อยครับ
« เมื่อ: 02 ก.พ. 65 , 14:20:55 »
ตัวอย่างที่ผมเคยทำและเก็บไว้นะครับ แต่ผมใช้กับ SQL SERVER ไม่เคยลองกับ MySQL นะครับ
- ต้องการลิ้งค์ตารางชื่อ Table1 จาก SQL Server เข้ามายัง MS Access
- ข้อมูล SQL SERVER
--------------------------
Server Name : ASPIRE-ONE
Database Name: Demo
Login : sa
Password : Abc!23
--------------------------
<DAO>
'----------------Code Start----------------
Sub LinkSQL_DAO()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
Set tdf = db.CreateTableDef("dbo_Table1") 'ชื่อตารางที่ลิ้งค์เข้ามาใหม่
tdf.Connect = "ODBC;Driver=SQL SERVER;SERVER=ASPIRE-ONE;UID=sa;PWD=Abc!23;Database=Demo;"
tdf.SourceTableName = "Table1" 'ชื่อตารางเป้าหมายที่เครื่อง SQL Server
db.TableDefs.Append tdf
'-------- หากต้องการลิ้งค์เพิ่มอีกตาราง --------------------
' Set tdf = db.CreateTableDef("dbo_Table2")
' tdf.Connect = "ODBC;Driver=SQL SERVER;SERVER=ASPIRE-ONE;UID=sa;PWD=Abc!23;Database=Demo;"
' tdf.SourceTableName = "Table_2"
' db.TableDefs.Append tdf
'--------------------------------------------------
'-------- หากต้องการลบลิ้งค์ตาราง --------------------
' db.TableDefs.Delete "dbo_Table1"
'--------------------------------------------------
db.Close: Set db = Nothing
End Sub
'-----------------Code End-----------------
* หมายเหตุ: คำสั่งนี้จะไม่สามารถเซฟรหัสผ่านได้ ทุกครั้งที่เปิดไฟล์ฐานข้อมูล MS Access ใหม่แล้วเรียกลิ้งค์ตารางที่สร้างจะต้องใส่รหัสผ่านใหม่ในครั้งแรกเสมอ จึงเหมาะกับการใช้งานชั่วคราว หรืออาจต้องใช้คำสั่งลบลิ้งค์ตารางแล้วสร้างใหม่ทุกครั้งเมื่อเปิดไฟล์แทน
- ต้องการลิ้งค์ตารางชื่อ Table1 จาก SQL Server เข้ามายัง MS Access
- ข้อมูล SQL SERVER
--------------------------
Server Name : ASPIRE-ONE
Database Name: Demo
Login : sa
Password : Abc!23
--------------------------
<DAO>
'----------------Code Start----------------
Sub LinkSQL_DAO()
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
Set tdf = db.CreateTableDef("dbo_Table1") 'ชื่อตารางที่ลิ้งค์เข้ามาใหม่
tdf.Connect = "ODBC;Driver=SQL SERVER;SERVER=ASPIRE-ONE;UID=sa;PWD=Abc!23;Database=Demo;"
tdf.SourceTableName = "Table1" 'ชื่อตารางเป้าหมายที่เครื่อง SQL Server
db.TableDefs.Append tdf
'-------- หากต้องการลิ้งค์เพิ่มอีกตาราง --------------------
' Set tdf = db.CreateTableDef("dbo_Table2")
' tdf.Connect = "ODBC;Driver=SQL SERVER;SERVER=ASPIRE-ONE;UID=sa;PWD=Abc!23;Database=Demo;"
' tdf.SourceTableName = "Table_2"
' db.TableDefs.Append tdf
'--------------------------------------------------
'-------- หากต้องการลบลิ้งค์ตาราง --------------------
' db.TableDefs.Delete "dbo_Table1"
'--------------------------------------------------
db.Close: Set db = Nothing
End Sub
'-----------------Code End-----------------
* หมายเหตุ: คำสั่งนี้จะไม่สามารถเซฟรหัสผ่านได้ ทุกครั้งที่เปิดไฟล์ฐานข้อมูล MS Access ใหม่แล้วเรียกลิ้งค์ตารางที่สร้างจะต้องใส่รหัสผ่านใหม่ในครั้งแรกเสมอ จึงเหมาะกับการใช้งานชั่วคราว หรืออาจต้องใช้คำสั่งลบลิ้งค์ตารางแล้วสร้างใหม่ทุกครั้งเมื่อเปิดไฟล์แทน
5
ห้อง MS Access / : เอาข้อความจากสองเรคคอร์ดไปใส่ในเรคคอร์ดเดียว
« เมื่อ: 23 ก.ย. 64 , 22:15:42 »
เหมือนเคยตอบไปนานแล้ว ไม่รู้ว่าแนวเดียวกันหรือเปล่านะครับ ลองดูกระทู้นี้ครับ
https://www.thai-access.com/index.php?topic=344.0
https://www.thai-access.com/index.php?topic=344.0
6
ห้อง MS Access / : ขอโค้ดแจ้งเตือนเวลาเชื่อมต่อวงแลนไม่ได้
« เมื่อ: 17 พ.ย. 63 , 00:01:41 »
จำได้ว่ามันมีหลายแบบมาก ทั้ง api wmi แต่ที่ผมมีในเครื่องเป็นแบบง่ายๆ ไม่ได้แสดงค่าอะไรแค่ให้ค่า True กับ False เท่านั้น แต่ฟังก์ชั่นนี้ตอบสนองเร็วใช้ได้ดีกว่าการ Ping แต่แม่นยำป่าว ต้องลองดูนะครับ
Function SystemOnline(ByVal ComputerName As String) As Boolean
Dim colPingResults As Variant
Dim oPingResult As Variant
Dim strQuery As String
strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'"
Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery)
For Each oPingResult In colPingResults
If Not IsObject(oPingResult) Then
SystemOnline = False
ElseIf oPingResult.StatusCode = 0 Then
SystemOnline = True
Else
SystemOnline = False
End If
Next
End Function
-----------------------------------------------------
การใช้งาน
SystemOnline("192.168.1.3")
หรือ
SystemOnline("ชื่อคอมเป้าหมาย")
Function SystemOnline(ByVal ComputerName As String) As Boolean
Dim colPingResults As Variant
Dim oPingResult As Variant
Dim strQuery As String
strQuery = "SELECT * FROM Win32_PingStatus WHERE Address = '" & ComputerName & "'"
Set colPingResults = GetObject("winmgmts://./root/cimv2").ExecQuery(strQuery)
For Each oPingResult In colPingResults
If Not IsObject(oPingResult) Then
SystemOnline = False
ElseIf oPingResult.StatusCode = 0 Then
SystemOnline = True
Else
SystemOnline = False
End If
Next
End Function
-----------------------------------------------------
การใช้งาน
SystemOnline("192.168.1.3")
หรือ
SystemOnline("ชื่อคอมเป้าหมาย")
7
ห้อง MS Access / : มีวิธีสร้าง Form ที่ค้นหาข้อมูลด้วยเดือนเเละปีไหมครับ
« เมื่อ: 13 พ.ย. 63 , 06:40:37 »
ก่อนอื่น เท่าที่ดู ผมว่าถ้าจะเทียบค่าต้องเขียนอ้างให้ตัวเลข โดยการใช้ มากว่า น้อยกว่า เทียบ String มันจะเพียนไปจากที่ตั้งใจไว้ และอีกอย่าง ผมว่าลองใช้ Between มันจะดูง่ายกว่าป่าวครับ
strCriteriaM = "([Month] between " & Me.FROMmonthtxt.Value & " and " & Me.TOmonthtxt.Value & ") and ([Year] between " & Me.FROMyeartxt.Value & " and " & Me.TOyeartxt.Value & ")"
ไม่รู้ว่าได้ตามต้องการป่าวนะครับ เป็นไอเดีย
strCriteriaM = "([Month] between " & Me.FROMmonthtxt.Value & " and " & Me.TOmonthtxt.Value & ") and ([Year] between " & Me.FROMyeartxt.Value & " and " & Me.TOyeartxt.Value & ")"
ไม่รู้ว่าได้ตามต้องการป่าวนะครับ เป็นไอเดีย
โพสต์นี้ได้รับคำขอบคุณจาก: SSukHaveq
8
ห้อง MS Access / : รูปแบบวันที่ จาก XML --> Access
« เมื่อ: 13 ก.ค. 63 , 13:51:10 »
เสริมหน่อยนะครับ คือ Unix Timestamp ในการแปลง เวลาจะเป็นมาตรฐาน GMT ซึ่งหากต้องการให้แสดงเป็นเวลาไทยต้อง GMT+7:00 ขึ้นอยู่กับว่าข้อมูลบันทึกมาจากไหนถ้าบันทึกเวลาเป็นไทยอยู่แล้วก็ไม่ต้องแปลง แต่ส่วนใหญเวลาเขาแปลงแสดงในสาธารณะเขาจะใช้ GMT ถ้าอย่างนั้น หากเราอยากจะรู้ว่าเป็นเวลาไทยเท่าไหร่ก็ต้องบวกอีก 7 ชั่วโมงด้วยนะครับ ไม่งั้นเวลาจะไม่ตรง ต้องตรวจสอบความถูกต้องของข้อมูลด้วยนะครับ
https://www.epochconverter.com/
https://www.epochconverter.com/

9
ห้อง MS Access / : ค้นหาข้อมูลที่เป็นภาษาไทยใน MS Access ไม่พบค่ะ
« เมื่อ: 23 มิ.ย. 63 , 05:42:19 »
มันเป็นลักษณะคำสงวนของ MS Access (Wildcard Characters) ลองเพิ่ม single quote เป็นสองตัวดูครับว่าเจอป่าว
SQL = "SELECT Title, Name, Surname " _
& "FROM Employee " _
& "WHERE Name = N''" & Me.txtSearchName & "''"
SQL = "SELECT Title, Name, Surname " _
& "FROM Employee " _
& "WHERE Name = N''" & Me.txtSearchName & "''"
โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess
10
ห้อง MS Access / : จะปิดข้อความยืนยันการดำเนินการคิวรีหรือรันมาโคร
« เมื่อ: 30 เม.ย. 63 , 11:41:00 »
การยกเลิกการตั้งค่า Security Warning Macro Setting ของ Ms Access ให้ใช้งานคำสั่ง VBA ได้
1. คลิ๊กเมาส์ขวาที่ Desktop เลือกเมนู New > Text Document
2. จะได้ไฟล์ New Text Document.txt เปล่าๆมา คลิ๊กๆเปิดไฟล์ขึ้นมา ใส่โค๊ดนี้ลงไป
'----------------Code Start----------------
On Error Resume Next
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
Dim objVer
Set objVer = CreateObject("Access.Application")
Dim strRegPath
Dim Application_Version
Application_Version = objVer.Version 'Return 14.0, 15.0, etc.
strRegPath = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application_Version & "\Access\Security\VBAWarnings"
If WshShell.RegRead(strRegPath) <> 1 then
If MsgBox("Click OK to Enable all macros.", vbQuestion + vbOKCancel, "Security VBA Warnings") = vbOK Then
WshShell.RegWrite strRegPath, 1, "REG_DWORD"
End If
Else
'WScript.echo "กำหนดใช้งาน Macros ไว้อยู่แล้ว"
MsgBox "กำหนดใช้งาน Macros ไว้อยู่แล้ว", ,"Security VBA Warnings"
End If
Wscript.Quit
3. จากนั้นไปที่เมนู File > Save As: เป็นชื่ออะไรก็ได้แต่นามสกุล vbs เช่น Macro.vbs และ Encoding: ANSI เซฟ แล้วปิดโปรแกรม notepad ไป
4. จะเห็นไฟล์ชื่อ Macro.vbs อยู่บน Desktop คลิ๊กๆเพื่อเรียกไฟล์ จะมีหน้าต่างข้อความ Click OK to Enable all macros. ให้กด OK ไปจนเสร็จ จะเป็นการแก้ค่ารีจีสตี้ในเครื่องเรื่องของการแจ้งเตือน หรือต้องการกำหนดแก้ไขอย่างอื่นก็แก้โค้ดเอาได้เลยครับ
5. ส่งไฟล์ไปให้เครื่องอื่นโดยรูปแบบ .zip แล้วลองให้เค้ารันไฟล์ที่ทำนี้ดูครับ
ลองปรับใช้ดู หวังว่าคงช่วยได้
1. คลิ๊กเมาส์ขวาที่ Desktop เลือกเมนู New > Text Document
2. จะได้ไฟล์ New Text Document.txt เปล่าๆมา คลิ๊กๆเปิดไฟล์ขึ้นมา ใส่โค๊ดนี้ลงไป
'----------------Code Start----------------
On Error Resume Next
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
Dim objVer
Set objVer = CreateObject("Access.Application")
Dim strRegPath
Dim Application_Version
Application_Version = objVer.Version 'Return 14.0, 15.0, etc.
strRegPath = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Application_Version & "\Access\Security\VBAWarnings"
If WshShell.RegRead(strRegPath) <> 1 then
If MsgBox("Click OK to Enable all macros.", vbQuestion + vbOKCancel, "Security VBA Warnings") = vbOK Then
WshShell.RegWrite strRegPath, 1, "REG_DWORD"
End If
Else
'WScript.echo "กำหนดใช้งาน Macros ไว้อยู่แล้ว"
MsgBox "กำหนดใช้งาน Macros ไว้อยู่แล้ว", ,"Security VBA Warnings"
End If
Wscript.Quit
3. จากนั้นไปที่เมนู File > Save As: เป็นชื่ออะไรก็ได้แต่นามสกุล vbs เช่น Macro.vbs และ Encoding: ANSI เซฟ แล้วปิดโปรแกรม notepad ไป
4. จะเห็นไฟล์ชื่อ Macro.vbs อยู่บน Desktop คลิ๊กๆเพื่อเรียกไฟล์ จะมีหน้าต่างข้อความ Click OK to Enable all macros. ให้กด OK ไปจนเสร็จ จะเป็นการแก้ค่ารีจีสตี้ในเครื่องเรื่องของการแจ้งเตือน หรือต้องการกำหนดแก้ไขอย่างอื่นก็แก้โค้ดเอาได้เลยครับ
5. ส่งไฟล์ไปให้เครื่องอื่นโดยรูปแบบ .zip แล้วลองให้เค้ารันไฟล์ที่ทำนี้ดูครับ
ลองปรับใช้ดู หวังว่าคงช่วยได้
โพสต์นี้ได้รับคำขอบคุณจาก: PNR
11
ห้อง MS Access / : โปรแกรม Access error Query " is corrupt
« เมื่อ: 21 พ.ย. 62 , 13:53:29 »
ลองวิธี Uninstall ตัวอัพเดทออกตามวิธีนี้ดูว่าได้ไม๊ครับ
http://fmsinc.com/MicrosoftAccess/Errors/query_is_corrupt/index.htm
http://fmsinc.com/MicrosoftAccess/Errors/query_is_corrupt/index.htm

โพสต์นี้ได้รับคำขอบคุณจาก: mtaccess
12
ห้อง MS Access / : การเรียง Record ตามวันที่เพื่อดึงข้อมูลมาใช้ใน Query
« เมื่อ: 16 พ.ย. 62 , 18:14:08 »
13
ห้อง MS Access / : สอบถามการสร้าง Expression เพื่อนับอายุงานครับ
« เมื่อ: 12 พ.ย. 62 , 15:18:26 »
เราก็สามารถสร้างเงื่อนไขต่อไปได้ครับว่า ถ้าฟิลด์ TerminateDate มีค่าก็ให้เทียบค่าวันที่ฟิลด์นี้ แต่ถ้าไม่มีค่าก็เทียบค่าวัน ที่วันที่ปัจจุบัน
คำนวณวัน
CompanyHiringDate_Day:
IIf(isnull([TerminateDate]),
IIf(DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date()),[CompanyHiringDate]),Date())<0,DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date())-1,[CompanyHiringDate]),Date()),DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date()),[CompanyHiringDate]),Date())),
IIf(DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],[TerminateDate]),[CompanyHiringDate]),[TerminateDate])<0,DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],[TerminateDate])-1,[CompanyHiringDate]),[TerminateDate]),DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],[TerminateDate]),[CompanyHiringDate]),[TerminateDate])))
ทำในส่วนของ เดือน และ ปี ด้วย ประมาณนี้ครับ
คำนวณวัน
CompanyHiringDate_Day:
IIf(isnull([TerminateDate]),
IIf(DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date()),[CompanyHiringDate]),Date())<0,DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date())-1,[CompanyHiringDate]),Date()),DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],Date()),[CompanyHiringDate]),Date())),
IIf(DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],[TerminateDate]),[CompanyHiringDate]),[TerminateDate])<0,DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],[TerminateDate])-1,[CompanyHiringDate]),[TerminateDate]),DateDiff("d",DateAdd("m",DateDiff("m",[CompanyHiringDate],[TerminateDate]),[CompanyHiringDate]),[TerminateDate])))
ทำในส่วนของ เดือน และ ปี ด้วย ประมาณนี้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Tatchawin
15
ห้อง MS Access / : ดึงรูปใน Folder มาแสดงบนฟอร์ม โดยไม่ save รูปใน database
« เมื่อ: 30 ต.ค. 62 , 23:41:20 »
ลองดูที่คลิปนี้นะครับ เผื่อช่วยได้
https://youtu.be/YGIhU4KJFDc?t=486
https://youtu.be/YGIhU4KJFDc?t=486

โพสต์นี้ได้รับคำขอบคุณจาก: pitakchan
16
ห้องสนทนาทั่วไป / : Acess สามารถเขียนแล้วใจ้จอทัชสกรีนได้ไหมครับ
« เมื่อ: 11 ต.ค. 62 , 14:33:58 »
ผมเคยลองเขียนแบบการใส่เป็นรหัสผ่านด้วยหน้าจอทัชสกรีน ลองดูเป็นไอเดียได้นะครับ
วีดีโอตัวอย่างหน้าจอทัชสกรีน
วีดีโอตัวอย่างหน้าจอทัชสกรีน

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