แสดงกระทู้

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

หน้า: [1] 2
1
น่าจะแบบนี้ครับ
โค๊ด: [Select]
Sub FieldNames()
    Dim rst, rstOut, strTable  As Recordset
    Dim f As Field
    Dim SQL, RecordName As String
   
    Set rst = CurrentDb.OpenRecordset("tbTarang1")
    Set rstOut = CurrentDb.OpenRecordset("tbfild1")
        rst.MoveFirst
        Do Until rst.EOF
            RecordName = rst!fname
    Set strTable = CurrentDb.OpenRecordset(RecordName)
            For Each f In strTable.Fields
                rstOut.AddNew
                rstOut![tarang] = RecordName
                rstOut![fild] = f.Name
                rstOut.Update
            Next
        rst.MoveNext
        Loop
    rst.Close: Set rst = Nothing
    rstOut.Close: Set rstOut = Nothing
    strTable.Close: Set strTable = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

3
ถ้าเราต้องการให้แยก Field ในตาราง ครับ เราต้องเพิ่มทุกช่องใช่ไหมครับ
เช่น ถ้าเราใส่ตรง Number 1 - 10
ก่จะได้
Runnum   : AAA 10ตัว
Runnum1 : 2010 10ตัว
Runnum2 : 0001-0010

แก้โค้ดเป็นแบบนี้
โค๊ด: [Select]
Dim strNum As String
Dim I As Long
Dim db As Database
Dim rs As Recordset
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("table1", DB_OPEN_DYNASET)
   
    For I = Me.txtBeginNumber To Me.txtEndNumber
    strNum = Right("00000" & I, 4)

     rs.AddNew
        rs![Runnum] = Me.txtModel
        rs![Runnum1] = Me.txtYear
        rs![Runnum2] = strNum
       
     rs.Update
     Next
rs.Close
db.Close
Set rs = Nothing: Set db = Nothing
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

4
จากอันเก่าปรับโค้ดเป็นแบบนี้นะครับ ไม่ต้องสร้างตารางใหม่
เอาตาราง Temp ออกไปได้เลย

โค๊ด: [Select]
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strWong_Code As String
Dim strMember_Code As String
Dim SQL As String
Set db = CurrentDb()
Set rst = db.OpenRecordset("TB2", dbOpenDynaset)
If Not rst.BOF And Not rst.EOF Then
  rst.MoveFirst
  strWong_Code = rst![วง]
  strMember_Code = rst![สมาชิก]
  rst.MoveNext
 
  Do Until rst.EOF
    If strWong_Code = rst![วง] Then
      strMember_Code = strMember_Code & "," & rst![สมาชิก]
    Else
DoCmd.SetWarnings False
   SQL = "UPDATE TB1 " & _
        "SET samachik= '" & strMember_Code & "'" & _
        "WHERE [รหัส] = '" & strWong_Code & "'"
    DoCmd.RunSQL SQL
      strWong_Code = rst![วง]
      strMember_Code = rst![สมาชิก]
    End If
    rst.MoveNext
  Loop 

DoCmd.SetWarnings False
   SQL = "UPDATE TB1 " & _
        "SET samachik= '" & strMember_Code & "'" & _
        "WHERE [รหัส] = '" & strWong_Code & "'"
    DoCmd.RunSQL SQL
    DoCmd.SetWarnings True
End If
rst.Close
Set rst = Nothing
db.Close
Set db = Nothing
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

5
ปัญหาคือ เวลาผมเลือก รายการใน combobox1 แล้วไฟของปุ่ม Numlock  ชอบดับเองตลอดเวลา  แล้วเวลาเลือกรายการอีกตรั้งก็จะติด เลือกรายการครั้งที่ 3 ก็จะดับ
ช่วยด้วยครับคืออยากให้ไฟติดตลอดเวลาไม่ว่ากี่ครั้งที่เลือกรายการครับ เป็น Windows 10 , Access 2007 ครับ

ขั้นตอนนะครับ
1.สร้าง Module ใส่โค้ดในลงไปแล้วเซฟ

โค๊ด: [Select]
Option Compare Database
 Private Type OSVERSIONINFO
        dwOSVersionInfoSize As Long
        dwMajorVersion As Long
        dwMinorVersion As Long
        dwBuildNumber As Long
        dwPlatformId As Long
        szCSDVersion As String * 128   '  Maintenance string for PSS usage
      End Type
      ' API declarations:
      Private Declare Function GetVersionEx Lib "Kernel32" _
         Alias "GetVersionExA" _
         (lpVersionInformation As OSVERSIONINFO) As Long
      Private Declare Sub keybd_event Lib "user32" _
         (ByVal bVk As Byte, _
          ByVal bScan As Byte, _
          ByVal dwflags As Long, ByVal dwExtraInfo As Long)

      Private Declare Function GetKeyboardState Lib "user32" _
         (pbKeyState As Byte) As Long

      Private Declare Function SetKeyboardState Lib "user32" _
         (lppbKeyState As Byte) As Long
      ' Constant declarations:
      Const VK_NUMLOCK = &H90
      Const VK_SCROLL = &H91
      Const VK_CAPITAL = &H14
      Const KEYEVENTF_EXTENDEDKEY = &H1
      Const KEYEVENTF_KEYUP = &H2
      Const VER_PLATFORM_WIN32_NT = 2
      Const VER_PLATFORM_WIN32_WINDOWS = 1
Function IsNumLockOn() As Boolean
        Dim o As OSVERSIONINFO
        o.dwOSVersionInfoSize = Len(o)
        GetVersionEx o
        Dim keys(0 To 255) As Byte
        GetKeyboardState keys(0)
        IsNumLockOn = keys(VK_NUMLOCK)
End Function

Sub ToggleNumLock()
        Dim o As OSVERSIONINFO
        o.dwOSVersionInfoSize = Len(o)
        GetVersionEx o
        Dim keys(0 To 255) As Byte
        GetKeyboardState keys(0)
          If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=====Win95
                keys(VK_NUMLOCK) = Abs(Not keys(VK_NUMLOCK))
                SetKeyboardState keys(0)
          ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then   '=====WinNT
          'Simulate Key Press
            keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
          'Simulate Key Release
            keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY _
               Or KEYEVENTF_KEYUP, 0
          End If
End Sub

Sub mySendKeys(sKeys As String, Optional bWait As Boolean = False)
Dim bNumLockState As Boolean
    bNumLockState = IsNumLockOn()
    SendKeys sKeys, bWait
    If IsNumLockOn() <> bNumLockState Then
        ToggleNumLock
    End If
End Sub

ขั้นตอนที่ 2 ไปที่ฟอร์ม เราจะทำกับ Control ตัวไหนให้กำหนด Event GoFocus ได้เลยเช่น

โค๊ด: [Select]
Private Sub Combo1_GotFocus()
Call ToggleNumLock
End Sub


Credit http://access.mvps.org/ link
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

6
ลองใช้เว็บเบราเซอร์ดูไม๊ครับ
https://youtu.be/bEY-l75nGqM?t=1332 link
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

7
ลองดูตัวอย่างนี้ครับ พอดีค้นหาเจอจากเว็บนอก และเพิ่มเติมบางส่วนเช่นเลือกข้อมูลจากตารางพิกัส gps ลูกค้าให้ด้วยคับ
ตัวแผนที่อัพเดทล่าสุด 2019
Credit : Philben




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

8
โค้ดตัวอย่างนี้ เป็นการแปะค่าของฟิลด์ต่างๆในบรรทัดที่ต้องการ มาลงเป็นบรรทัดใหม่ในฟอร์ม/ซับฟอร์มเดียวกัน วิธีคือให้สร้าง Command Button เอาไว้ที่ไหนก็ได้สักที่บนบรรทัดของข้อมูล (สมมุติชื่อ btnCopy) เมื่อต้องการก็อปปี้ ก็แค่คลิกที่ปุ่มนี้

Private Sub btnCopy_Click()
    Dim RS As DAO.Recordset
   
    If Me.NewRecord Or Me.Dirty Then Exit Sub ' ถ้าคลิกปุ่มบนบรรทัดของรายการใหม่ หรือ บนบรรทัดที่รายการกำลังแก้ไขอยู่ ก็ไม่ต้องทำอะไร
   
    Set RS = Me.RecordsetClone    ' กำหนดตัวแปรสำหรับอ้างอิงข้อมูลของบรรทัดปัจจุบัน (บรรทัดที่เลือก)
    RS.Bookmark = Me.Bookmark  ' ให้ตัวแปรดังกล่าวชี้ไปเรคอร์ดเดียวกันกับบรรทัดปัจจุบัน
    DoCmd.GoToRecord , , acNewRec   ' กระโดดไปบรรทัดรายการใหม่
    Me("ชื่อคอนโทรลบนฟอร์ม") = RS("ชื่อฟิลด์ของคอนโทรลบนฟอร์ม") ' ต้องการก็อปปี้ฟิลด์อะไรบ้าง ก็เพิ่มบรรทัดตามจำนวนฟิลด์ที่ต้องการต่อลงไปได้เรื่อยๆ
   
    Set RS = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

9



ผมได้ลองสร้างระบบ ตอกบัตรของพนักงานในการเข้างาน มาให้ดูเป็นแนวทางคับ
1.ก่อนใช้งานให้ ใส่ รหัส Barcode ของพนักงานแต่ละคน ในตาราง tblEmployee ก่อนนะครับ ผมใส่ไว้ให้ 2 ไอดีคือ 01 และ 02
2.เมื่อเราแสกน Barcode โปรแกรมจะทำการ Enter อัตโนมัติ
3.ระบบจะบันทึกข้อมูลเข้าสู่ตารางทันทีถ้า Barcode นั้นมีอยู่จริง ถ้าไม่มีอยู่จะมีการแจ้งเตือนให้ครับ
4.รายละเอียดชื่อพนักงานและเวลาในการตอกบัตรนั้นจะแสดงขึ้นมาเมื่อแสกน Barcode ครับ และจะหายไปเองเมื่อครบ 5 วินาที
5.ผมได้สร้างนาฬิกา และ แสดงวันที่ เรียลไทม์ ไว้บนฟอร์มด้วย
6.โดยปกติ พนักงานอาจจะเผลอไปแสกน วันนึงหลายๆ ครั้ง แต่ผมได้สร้างคิวรี่ตรวจเช็คเวลาที่แสกนอันแรกสุดของวันมาแสดงให้ครับ
7.มีระบบสถานะแสดงไว้ให้ด้วยกรณีที่ผิดพลาดก็จะมีข้อความแสดงแจ้งเตือนใหักับพนักงานได้ทราบครับ

ลองดูนะครับ ไม่รู้ได้หรือเปล่า
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

10
ห้อง MS Access / : สอบถามเรื่อง relationships
« เมื่อ: 24 ก.ค. 62 , 14:37:06 »

การรวม(Join) มีหลายแบบ แล้วแต่การนำไปใช้คับเช่น

การรวมภายใน: เฉพาะข้อมูลที่เกี่ยวข้องจากทั้งสองตารางที่รวม เช่นต้องการให้แสดงเฉพาะรายการ CustomerID ที่ตรงกันระหว่าง 2 ตาราง  ปกติน่าจะใช้แบบนี้อยู่ใช่ไหมคับ

การรวมภายนอก: ข้อมูลที่เกี่ยวข้องทั้งหมดรวมกันอย่างถูกต้อง รวมทั้งระเบียนที่เหลือทั้งหมดจากตารางหนึ่ง  เช่นมีลูกค้าบริษัทใดบ้างใน ตาราง Customer ที่ยังไม่เคยสั่งซื้อสินค้าเลย เราสามารถเปลี่ยนประเภทความสัมพันธ์เป็นประเภทที่ 2 เพื่อดูข้อมูลของอีกตารางซึ่งมี Customer ที่มากกว่าจะนำมาแสดงทั้งหมด

ปกติเราจะกำหนด Criteria = null เพื่อดูว่า Customer รายการไหนยังไม่มีในอีกตารางหนึ่งเป็นต้นคับ

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

11
กำหนด Property ที่ Filter ให้เป็นเงื่อนไขที่ต้องการ เช่น Bill_Status <> 0 และกำหนดให้ Filter On = True
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

12
ไม่เคยใช้นะครับ แต่น่าจะเลือก Enable Automatic Reconnect ในรูป 5.4 https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-dsn-windows-5-2.html link
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

13


นาฬิการแบบเข็มจาก MS Access ครับ

ต้องขออภัยผู้จัดทำผมโหลดมานานจำไม่ได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

14
 


:miao: :shout: :love: :grin:

ผมเห็นเพื่อนๆสมาชิกหลายๆท่านมีการสร้าง นาฬิกาไว้ แสดงบนฟอร์มแต่เวลาไม่ได้แสดงตลอดเวลาวันนี้เรามาลองทำนาฬิกาไว้แสดงบนฟอร์มเพื่อให้ดูสวยงามไปอีกแบบ

โดยสร้าง textbox ชื่อ txtShowTime
โดยเซ็ท TimeInterval 125
และใส่ Code ที่ Event OnTimer ดังนี้
โค๊ด: [Select]
Private Sub Form_Timer()
Me.txtShowTime.Value = Format(Time, "HH:mm:ss AM/PM")
End Sub

ต่อไปทำให้แสดงวันที่ ก็กด ที่ Design  > กดเลือกที่ Date And Time ลงมาวงในฟอร์ม และตกแต่งเพื่อความสวยงาม
จบขั้นตอนคับ
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

15
ถึงเราจะ ALTER จากฟิลด์ TEXT ไปเป็น MEMO ได้ แต่ไม่มีทางที่จะเพิ่มคุณสมบัติ Hyperlink ให้กับฟิลด์ MEMO ที่มีอยู่แล้วได้  ทำได้เฉพาะตอนสร้างฟิลด์เท่านั้น ผมถึงบอกให้ สร้างฟิลด์ Hyperlink แล้วก๊อปปี้ค่าจากฟิลด์ TEXT มา  แล้วก็ค่อยลบฟิลด์ TEXT อีกทีไงครับ
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

16
ปัญหาคือ Access SQL ไม่มี Hyperlink data type โดยเฉพาะ  แต่ DAO มี   ซึ่ง Hyperlink จริงๆก็คือ Memo data type ที่เพิ่มคุณสมบัติของ hyperlink เข้าไป   ดังนั้นแนะนำว่าให้ใช้ DAO เพิ่มฟิลด์ Hyperlink ลงในเทเบิลแล้วกีอปปี้ค่าจากฟิลด์เดิมมาใส่ เสร็จแล้ลบฟิลด์เดิมทิ้งแทน

โค้ดการสร้างฟิลด์ Hyperlink

    Dim DB As DAO.Database
    Dim TD As DAO.TableDef
    Dim FD As DAO.Field
   
    Set DB = CurrentDb
    Set TD = DB.TableDefs("T")
    Set FD = TD.CreateField("H", dbMemo)
   
    FD.Attributes = FD.Attributes Or dbHyperlinkField
    TD.Fields.Append FD

ส่วนชื่อของ Autonumber ใช้คำว่า COUNTER ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: nonc31

หน้า: [1] 2