แสดงกระทู้

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
แวะมาโพสรูปเทียบไฟล์เดียวกันเครื่องเดียวกันแต่เปิด-ปิด Visual effects ของ Windows ต่างกัน
ผลคือถ้าปุ่มตั้งค่า Use Theme = Yes ใว้ Visual effects ไม่มีผล  :question:
โพสต์นี้ได้รับคำขอบคุณจาก: Un, พิชญะ ชัยชนะ

2
พร้อมให้ทีมวิวไปดูเครื่องผู้ใช้งานหรือคุยไลน์ส่งข้อความส่วนตัวมานะครับ

Adding Databases to Access 2007 (and higher) Trusted Locations link
Adding Trusted Location to Access Run Time link
https://www.accessribbon.de/en/?Trust_Center:Trusted_Locations link
How do set a file/location to trusted for Access runtime? link
ตัวอย่างชุดคำสั่งแก้ Registry
โค๊ด: [Select]
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security]
"VBAWarnings"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security\Trusted Locations]
[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\Location0]
"Path"="%userprofile%\\my documents\\"
"Description"="my docs"
"Date"="14/03/2011 5:39 p.m."
"AllowSubFolders"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\Location2]
"Path"="C:\\Program Files\\Microsoft Office\\Office12\\ACCWIZ\\"
"Description"="Access default location: Wizard Databases"
"AllowSubFolders"=dword:00000001
โพสต์นี้ได้รับคำขอบคุณจาก: Sompode Harnying

3
พื้นฐานตัวโปรแกรมเขาจะเปิดระบบป้องกันใว้อยู่นะครับ เราต้องเปิด Access แบบเพียวๆ(ตัวruntimeมีไอค่อนให้กดใหมน้อ)จากนั้นไปตั้งค่าครับ
Access Options > Trust Center > ActiveX Settings > Enable All controls....

https://www.thai-access.com/index.php?topic=1024.msg4510#msg4510
โพสต์นี้ได้รับคำขอบคุณจาก: Sompode Harnying

4
ไฟล์ฉบับเหมือนจะง่ายไม่ผูกอะไรครับ :shout:
จากกระทู้เก่าท่านเห็นมี Value แยกหมวดอยู่ผมเลยแอบเอามาใส่ในนี้ให้มีเป็นแนวด้วยนะครับ หรือก็คือ ID จะรันแยกหมวดและปีเดือนครับ(แต่ Table2 จะไม่เทพอย่างท่าน PNR )
โค๊ด: [Select]
Private Sub cmd_QuNew_Click()
If IsNull(cmbG) Then
    Me.cmbG.SetFocus
    MsgBox "เลือกกลุ่ม"
Else
    Me.txtID = AutotxtID
End If
End Sub

Function AutotxtID() As String
Dim X As Variant
Dim bk, cmbG As String
    cmbG = Me.cmbG
    X = DMax("Right(ID,4)", "[Table1]", "Left([ID],7) = cmbG & Left([txtDate2], 4)")
    If IsNull(X) Then bk = 1 Else bk = X + 1
    AutotxtID = cmbG & Left([txtDate2], 4) & Format(bk, "0000")
End Function

หรือตัวอย่างของท่าน PNR มีระบบผูกตาราง,คิวรี่,ฯลฯ
https://www.thai-access.com/index.php?topic=1063.msg4744#msg4744
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

5
สร้างบ้านก่อนแล้วค่อยให้คนเลือกบ้านที่จะเข้าไปอาศัยครับ
ถ้าจะทั้งสร้างคนและสร้างบ้านไปพร้อมๆกันกลัวว่าจะเลขที่บ้านเดียวกันแต่ดันอยู่คนล่ะหลังนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: thanapol.w

6
ระบบรันเลขที่ในเว็บมีเยอะเลยค้นหาดูก่อนครับ เพียงแต่เขาจะรันหรือทำงานบนฟอร์มกันซะส่วนใหญ่นะ :yuush:
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

7
master form ที่เห็นอยู่ด้านซ้ายนั่นเป็นการแสดงข้อมูลฉบับเต็มที่มีอยู่จริงบน tb_ccr ไม่ใช้ผลการค้นหา(จากคำใดคำหนึ่งแบบซับฟอร์ม)
ดังนั่นถ้าจะให้ master form ด้านซ้าย ทำงานก็เปลี่ยน tx_search ไปเป็น combobox เพื่อเลือกข้อมูลจากตารางลงมาแสดงเลยอ่านะ(ที่นี้ตารางค้นหาก็ไม่จำเป็นล่ะมั้งนี่)

ไฟล์ตัวอย่าง(ผมก็ก๊อบมาจากที่อื่น)ที่ตัว combobox
1.แก้ Row Source ให้เป็นเทเบิ้ลที่ต้องการดึงรายการมาแสดง(tb_ccr)
2.แก้มาโคร AfterUpdate ด้านล่างที่ SearchForRecord ตรง Where.... ให้เป็น =="[ชื่อคอลัมน์ที่ใช้รันเลขที่]=" & [TempVars]![ActiveControlValue] 

ปล.รูปที่อัพมาวาดเขียนลงไปด้วยก็ได้นะว่าอะไรเป็นอะไรคืออะไร?
โพสต์นี้ได้รับคำขอบคุณจาก: S'Saifon SB B'Banjongjairak

8
ลองเปลี่ยนตามนี้ดูครับ

โค๊ด: [Select]
Private Sub bt_se_car_Click()
     Me.ชื่อซับฟอร์ม.Form.Filter = "[id_cr] like '*" & [tx_search] & "*'"
     Me.ชื่อซับฟอร์ม.Form.FilterOn = True
     Me.ชื่อซับฟอร์ม.Form.Refresh
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: S'Saifon SB B'Banjongjairak

9
ดูภาพแล้วข้องใจว่า"แสดงผลการค้นหาในซับฟอร์ม"ใช้หรือไม่ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: S'Saifon SB B'Banjongjairak

10
ห้อง MS Access / : การทำ supertype & subtype
« เมื่อ: 11 มี.ค. 63 , 13:35:17 »
เนื้อหาบทเรียนจากมหาวิทยาลัยบูรพาครับ > https://staff.informatics.buu.ac.th/~komate/886301/DB-Chpater-5.pdf link

อ้างถึง
5.1.5 disjoint constaint และ overlapping constaint
เอ็นทิตี้ supertype หนึ่งๆจะสามารถมีความเกี่ยวเนื่องกับเอ็นทิตี้ subtype ใน 2 รูปแบบ คือ แบบ
disjoint หรือแบบ overlapping ตัวอย่างเช่น ธุรกิจสายการบินทำการว่าจ้างพนักงานในตำแหน่งนักบิน ช่าง
ซ่อมบำรุง และนักบัญชี และมีกฎเกณฑ์ทางธุรกิจที่บ่งบอกว่า “พนักงานคนหนึ่งๆไม่สามารถทำงานในหลายๆ
ตำแหน่งได้” จากกฎเกณฑ์ทางธุรกิจดังกล่าวจะช่วยให้เราสามารถกำหนดลักษณะความสัมพันธ์ระหว่าง
เอ็นทิตี้ supertype และเอ็นทิตี้subtype ได้เป็นแบบ “disjoint subtype” หรือ “nonoverlapping
subtype” ที่ซึ่ง “แถวข้อมูลหนึ่งๆในเอ็นทิตี้ supertype จะสามารถมีความสัมพันธ์กับข้อมูลในเอ็นทิตี้
subtype หนึ่งๆเท่านั้น (ห้ามมีความสัมพันธ์กับหลายเอ็นทิตี้ subtype)” เช่น แถวข้อมูลหนึ่งๆในเอ็นทิตี้
EMPLOYEE จะมีความเกี่ยวเนื่องกับเอ็นทิตี้ PILOT หรือ MECHANIC หรือ ACCOUNTANCE อย่างใดอย่าง
หนึ่งเท่านั้น ..........

หรือตามที่ผมตีความสรุปได้ว่า
Disjoint = บังคับว่าเลือกได้เพียงแค่หนึ่งเช่น เป็นนักเรียนก็เรียนไปห้ามทำหน้าที่อื่น
Overlaping = เลือกได้มากกว่าหนึ่งหรือก็คือเป็นนักเรียนแล้วจะขยันทำอะไรอีกถ้าทำได้ก็ทำไป ^u^
แอบไปหาอ่านเจอมาตอบแทนผู้ตั้งกระทู้  :shout:
โพสต์นี้ได้รับคำขอบคุณจาก: thanapol.w

11
ด้านบนเป็นเพียงการเติมอักษรต่อท้ายเลขวันที่ครับ
ส่วนมาโครด้านล่างนี่ผมก็แก้จากชื่อเดือนภาษาไทยเป็นชื่อเดือนภาษาอังกฤษครับ
ตัวอย่างการนำไปใช้งาน =Format(Date(),"d ") & MonthNameEng(Date()) & " " & Year(Date()) = 25 February 2020

โค๊ด: [Select]
Option Compare Database

Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Public Declare Function GetLocaleInfo Lib "kernel32" _
   Alias "GetLocaleInfoA" _
(ByVal Locale As Long, _
   ByVal LCType As Long, _
   ByVal lpLCData As String, _
   ByVal cchData As Long) As Long

Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, ByVal dwLCType As Long) As String
   Dim sReturn As String
   Dim r As Long
   r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
   If r Then
      sReturn = Space$(r)
      r = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
      If r Then GetUserLocaleInfo = Left$(sReturn, r - 1)
   End If
End Function

Public Function mYear(ByVal yourDate As Date) As Long
    mYear = Year(yourDate)
    If GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) = 7 Then mYear = Year(yourDate)
End Function

Public Function bYear(ByVal yourDate As Date) As Long
bYear = Year(yourDate)
'If GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) <> 7 Then bYear = Year(yourDate) + 543
If GetUserLocaleInfo(GetSystemDefaultLCID(), &H1009) = 7 Then bYear = ((Year(yourDate) + 543) - 2500)
End Function

Function MonthNameEng(ByVal yourDate) As String
    If Not IsNull(yourDate) Then
        yourDate = Format(yourDate, "m")
        Select Case yourDate
            Case 1
               MonthNameEng = "January"
            Case 2
               MonthNameEng = "February"
            Case 3
               MonthNameEng = "March"
            Case 4
               MonthNameEng = "April"
            Case 5
               MonthNameEng = "May"
            Case 6
               MonthNameEng = "June"
            Case 7
               MonthNameEng = "July"
            Case 8
               MonthNameEng = "August"
            Case 9
               MonthNameEng = "September"
            Case 10
               MonthNameEng = "October"
            Case 11
               MonthNameEng = "November"
            Case 12
               MonthNameEng = "December"
            Case Else
               MonthNameEng = ""
        End Select
    End If
End Function


มาแถมถ้าอยากให้มีอักษรต่อท้ายด้วยอีก
1. แก้มาโครแรกให้ FancyDate = FancyDate & Format(dteInput, " ")
2. =FancyDate(Date()) & MonthNameEng(Date()) & " " & Year(Date()) จะได้  25th February 2020
โพสต์นี้ได้รับคำขอบคุณจาก: Krathok-man

12
ในมุมผมนะ
> เอามาใช้แค่เป็น Combo box ช่วยในการเลือกข้อมูลไม่ต้องผูกอะไรครับ ที่นี้ล่ะว่าComboboxเลือกข้อมูลแบบไหนมาเก็บในตาราง
   - เก็บเป็น ID = ในฟอร์มหรือรีพอร์ตอื่นๆค่อยเอามาผูกเพื่อดึงชื่อมาแสดง
   - เก็บเป็นชื่ออยู่แล้ว = ไม่จำเป็นที่จะต้องผูกอะไรอีกในอนาคตครับ

> เห็นมี xxx..ID ทั้งหลายอยู่แล้วไม่ตั้งให้เป็นหัวไปเลยไม่ต้องไปใช้ ID อ่านะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: oraaoi

13
สั่งบันทึกรหัสใว้ตอนดึงตารางมาครับ (แนวทางจากอ.TTT ดูที่ 26:35นาที)
โพสต์นี้ได้รับคำขอบคุณจาก: Kxess

14
> กระทู้โค้ดตัวอย่างที่เขาใช้ https://www.thai-access.com/index.php?topic=1087.msg4861#msg4861

> หรือชมแนวทางจาก อ.TTT ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Somkiat Tanthanawikrai

15
ใช้วิธีเมื่อไปที่ bill_no ให้ทำการตรวจสอบว่า shop มีค่าว่างอยู่หรือไม่?
โค๊ด: [Select]
Private Sub bill_no_GotFocus()
    If Me.shop = "" Then
    MsgBox "ป้อนข้อมูล shop ก่อนนะ"
    Me.shop.SetFocus
    End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: สันติสุข

16
     การสร้างไฟล์แอคเซสขึ้นมาไฟล์ๆหนึ่งนั้นก็คล้ายกับการเขียนโปรแกรมขึ้นมานั่นล่ะครับ ดังนั้นตาราง,คิวรี่,ฟอร์ม,หรือโค้ดคำสั่งที่มีอยู่ก็เกิดจากที่เราสร้างมันขึ้นมามันจะเป็นขยะหรือไม่ก็ขึ้นอยู่กับตัวเรา หรืออย่างบางทีเราสร้างคิวรี่,สร้างฟอร์มมาเก็บใว้ไม่ได้ใช้งานจริงนั่นก็ถือว่าเป็นขยะของไฟล์ได้แล้วครับ แต่เราก็อาจอยากเก็บใว้เพื่อใช้ในอนาคต,ตัวอย่างปัญหา,หรืออะไรก็แล้วแต่นั้นผมขอถือว่ามันไม่ใช้ขยะทางความคิดละ ที่นี้มันก็ขึ้นอยู่กับคนที่เขียนโปรแกรมล่ะว่าจะทำอย่างไรจะทำไฟล์ใหม่ที่ไม่มีขยะพวกนี้ใหมเพราะจะไปให้โปรแกรมอื่นอยูู่ๆเข้ามาลบตาราง,คิวรี่,ฟอร์มคงเป็นไปไม่ได้ครับ

     ส่วนอีกความหมาย(ในความคิดผม)นั่นคือระหว่างที่เราออกแบบโปรแกรมหรือใช้งานฐานข้อมูลอยู่นั้นตัวโปรแกรมจะเก็บแคสส่วนหนึ่งใว้ที่ตัวไฟล์ที่เราเขียน(มีผลต่อขนาดไฟล์)ใน ms access 2007 ขึ้นไปเราสามารถใช้คำสั่ง Compare and Repair Database ได้ครับ (2003ผมไม่รู้ว่ามีใหมหรืออยู่ตรงไหนนะลองหาดูครับ) https://www.addintools.com/documents/access/where-is-compact-repair.html link
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

หน้า: [1] 2 3 4