แสดงกระทู้

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

หน้า: [1] 2 3 4 ... 7
1
หรือลองอีกวิธีมั๊ยครับ แต่ผมไม่เคยลองนะ Microsoft Azure


ได้ผลงัยบอกต่อกันด้วยนะถ้ามีใครเคยใช้อะครับ

2
คุณอธิบายไม่ค่อยละเอียดเท่าไหร่ เลยไม่รู้ว่าคุณต้องการทำที่ส่วนไหน เอาที่ผมเข้าใจแล้วกันนะครับ ถ้าไม่ตรงตามต้องการก็ขออภัยด้วย ปรับใช้ดู
ในส่วนของรายงาน PrintJob1 คอนโทรลชื่อ Picture คุณต้องการให้แสดงรูปผู้สมัครใช่ป่าวครับ ถ้าใช่ให้เข้าไปที่รายงาน PrintJob1 มุมมองออกแบบ เลือกในส่วนของ Detail > On Print:
แล้วใส่โค้ดประมาณนี้ครับ

    If Not IsNull(Me.Text35) Then
        Me.Picture.PictureData = DLookup("Picture", "dbo_jobseil2", "IDCard=" & Me.Text35)
    Else
        Me.Picture.PictureData = Null
    End If

ลองดูครับ
ปล. ถ้าฟอร์มเชื่อมกับฐานข้อมูลตารางอยู่แล้วสามารถใช้เป็น
    Me.Picture.PictureData = [Picture]
ได้เลย ก็จะง่ายกว่า อยู่ที่การออกแบบครับ

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

Public Function sPing(sHost As String) As String
    Dim oPing As Object, oRetStatus As Object
    Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address = '" & sHost & "'")
    For Each oRetStatus In oPing
        If IsNull(oRetStatus.StatusCode) Or oRetStatus.StatusCode <> 0 Then
            sPing = "timeout" 'oRetStatus.StatusCode
        Else
            sPing = oRetStatus.ResponseTime
        End If
    Next
End Function

การใช้งาน
    sPing("192.168.1.7")
หรือใช้ชื่อเครื่องก็ได้เช่นกัน
    sPing("ชื่อเครื่องของฉัน")
 
Return
"45ms" = ติดต่อกับเครื่องเป้าหมายได้ใช้เวลา 45ms
"timeout" = ไม่พบเครื่องเป้าหมาย

หากมันไม่ timeout ก็ค่อยเขียนโค้ดดึงข้อมูลต่อไป ประมาณนี้ครับ

4
ห้อง MS Access / : ดูผลลัพธ์ loop ไม่ทัน
« เมื่อ: 27 เม.ย. 65 , 04:46:28 »
ลองใส่ DoEvents ในลูปดูว่าตรงตามต้องการป่าว

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

6
เหมือนเคยตอบไปนานแล้ว ไม่รู้ว่าแนวเดียวกันหรือเปล่านะครับ ลองดูกระทู้นี้ครับ
https://www.thai-access.com/index.php?topic=344.0

7
จำได้ว่ามันมีหลายแบบมาก ทั้ง 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("ชื่อคอมเป้าหมาย")

8
ก่อนอื่น เท่าที่ดู ผมว่าถ้าจะเทียบค่าต้องเขียนอ้างให้ตัวเลข โดยการใช้ มากว่า น้อยกว่า เทียบ String มันจะเพียนไปจากที่ตั้งใจไว้ และอีกอย่าง ผมว่าลองใช้ Between มันจะดูง่ายกว่าป่าวครับ

strCriteriaM = "([Month] between " & Me.FROMmonthtxt.Value & " and " & Me.TOmonthtxt.Value & ") and ([Year] between " & Me.FROMyeartxt.Value & " and " & Me.TOyeartxt.Value & ")"

ไม่รู้ว่าได้ตามต้องการป่าวนะครับ เป็นไอเดีย

9
เสริมหน่อยนะครับ คือ Unix Timestamp ในการแปลง เวลาจะเป็นมาตรฐาน GMT ซึ่งหากต้องการให้แสดงเป็นเวลาไทยต้อง GMT+7:00 ขึ้นอยู่กับว่าข้อมูลบันทึกมาจากไหนถ้าบันทึกเวลาเป็นไทยอยู่แล้วก็ไม่ต้องแปลง แต่ส่วนใหญเวลาเขาแปลงแสดงในสาธารณะเขาจะใช้ GMT ถ้าอย่างนั้น หากเราอยากจะรู้ว่าเป็นเวลาไทยเท่าไหร่ก็ต้องบวกอีก 7 ชั่วโมงด้วยนะครับ ไม่งั้นเวลาจะไม่ตรง ต้องตรวจสอบความถูกต้องของข้อมูลด้วยนะครับ
https://www.epochconverter.com/ link

10
มันเป็นลักษณะคำสงวนของ MS Access (Wildcard Characters) ลองเพิ่ม single quote เป็นสองตัวดูครับว่าเจอป่าว
SQL = "SELECT Title, Name, Surname " _
        & "FROM Employee " _
        & "WHERE Name = N''" & Me.txtSearchName & "''"

11
ถ้าหมายถึงการใช้คำสั่งภาษา SQL ของ Server ให้สร้างฟิลด์สร้างตารางใหม่ โดยสั่งผ่านโปรแกรม MS Access เลย จะต้องใช้ในส่วนของ Query Pass-Through แล้วเขียนภาษา SQL ของ Server ได้ครับ

12
การยกเลิกการตั้งค่า 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 แล้วลองให้เค้ารันไฟล์ที่ทำนี้ดูครับ

ลองปรับใช้ดู หวังว่าคงช่วยได้

13
ห้อง MS Access / : โปรแกรม Access error Query " is corrupt
« เมื่อ: 21 พ.ย. 62 , 13:53:29 »
ลองวิธี Uninstall ตัวอัพเดทออกตามวิธีนี้ดูว่าได้ไม๊ครับ
http://fmsinc.com/MicrosoftAccess/Errors/query_is_corrupt/index.htm link

14
หาได้ครับ ก็เขียนแบบนี้
InStr(1,[NameTH],"เอเ")

15
มันเป็นการเลือกใช้รูปแบบภาษาไทยใน MS Access ที่จะไม่สามารถนับสระในการค้นหาเพียงอย่างเดียวได้
เปลี่ยนจากการใช้ฟังก์ Like() เป็น InStr() แทน โดยลักษณะการใช้งานเปรียบเทียบได้ดังนี้:
[NameTH] Like "*เ*" >>>  InStr(1, [NameTH], "เ") > 0
[NameTH] Like "เ*"  >>>  InStr(1, [NameTH], "เ") = 1
[NameTH] Like "*เ"  >>>  InStr(1, [NameTH], "เ") = Len([NameTH]) หรือ InStr(Len([NameTH]), [NameTH], "เ") > 0

หน้า: [1] 2 3 4 ... 7