แสดงกระทู้

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

หน้า: [1] 2 3
1
ผมไม่มีมอนิเตอร์ 2 จอ เลยทดสอบไม่ได้ว่าให้ผลจริงแค่ไหน แต่ถ้าจอเดียว ก็ให้กำหนด Popup property ของฟอร์มเป็น Yes ก่อน และใส่โค้ดนี้ไว้ใน OnLoad event procedure ของฟอร์ม

Private Sub Form_Load()
    DoCmd.MoveSize ซ้าย, บน
End Sub

โดยที่ซ้ายและบน คือความห่างจากขอบซ้ายและขอบบนของจอ มีหน่วยเป็น twips (เท่ากับ 567 * เซ็นติเมตร) ดังนั้นต้องหาเองว่าจอที่ 2 มีขอบซ้ายเป็นเท่าไหร่กันแน่
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

2
ข้อมูลแก้ไข Type จาก nvarchar เป็น varchar ไม่ได้ค่ะ SQL ไม่ให้เปลี่ยน เนื่องจาก Export ข้อมูลมาจาก Access ข้อมูลหลาย Record แล้วด้วยค่ะ
ใช่ครับ SQL เขาไม่ให้เปลี่ยนจึงแนะนำแนวทางตามโพสล่างไปนะ :wut:
.....ใช้วิธีสั่งก๊อบข้อมูลทั้งหมดจาก ntext ไปคอลัมน์ที่สร้างใหม่เป็น text แล้วจึงใช้งานจากคอลัมน์นี่แทน...

ตัวอย่างชุดคำสั่งบน SQL Server Management Studio
UPDATE [ชุดดาต้าเบส].[dbo].[ชื่อเทเบิ้ล]
SET [คอลัมน์ใหม่] = [คอลัมน์เก่า]

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

3
ไม่แน่ใจนะครับ  ลองสร้าง Database Instance อีกตัวเพื่อทดลองก่อน ด้วยการ Clone จาก Instance ที่มีอยู่ แล้วแก้ให้ Collation ของ Instance ตัวใหม่ให้รองรับภาษาไทย
https://langisser.wordpress.com/2013/05/28/แก้ปัญหาไม่แสดงลภาษาไท/ link แล้วก็ลิงค์มาเป็น Linked Table ใน Access  จากนั้นทดลองเขียน SQL โดยมีเงื่อนไขหาข้อมูลภาษาไทย ทำทั้งใน SQL Server และใน Access ดู นอกจากนี้ เมื่อเปลี่ยน Collation แล้ว น่าจะทำให้ไม่ต้องใส่ Prefix N แม้จะเขียน SQL ในตัว SQL Server เองก็ตาม

ถ้าทำแล้วยังไม่ได้ ต้องรอผู้รู้ท่านอื่นมาให้คำแนะนำต่อไป


ข้อมูลใน Table แสดงภาษาไทยปรกตินะคะ ไม่ได้แสดง ???? แต่เวลาค้นหาด้วยภาษาไทย ไม่เจอ ถ้าใส่ N'สม' แบบนี้เจอ

อยากรู้ว่าตอนนี้ Server Collation, Database Collation มีค่าเป็นอะไรครับ

Collation ตามนี้ค่ะ


SQL_Latin1_General_CP1_CI_AS เป็น Collation สำหรับ English (United States)  ผมคิดว่าการตั้งไม่ตรงกับภาษาไทย ซึ่งใช้ Collation Thai_CI_AS น่าจะก่อให้เกิดปัญหานะครับ  อยากให้ลองทำตามที่ผมได้แนะนำไปก่อนหน้านี้ (ย้ำว่าทำการทดสอบบนฐานข้อมูลที่โคลนมาแล้วนะครับ ไม่ใช่ทดสอบบนฐานข้อมูลจริง) และตรวจสอบเพิ่มเติมด้วยว่า Windows System Locale ทั้งบนเครื่องที่ติดตั้ง SQL Server และเครื่องที่ใช้ Microsoft Access ได้ตั้งเป็น Thai (Thailand) แล้วหรือยัง เมื่อแก้ไขแล้ว ให้ลองเขียนคิวรี่ทั้งบน SQL Server และบน Microsoft Access โดยไม่ต้องมี prefix N  ดูว่าจะแก้ปัญหาได้หรือไม่
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

4
Data type ตระกูล N.... ค่อนข้างมีปัญหากับบ้านเราจริงครับ ผมจึงใช้วิธีสั่งก๊อบข้อมูลทั้งหมดจาก ntext ไปคอลัมน์ที่สร้างใหม่เป็น text แล้วจึงสั่งค้นหาจากคอลัมน์นี่แทน(ถ้าแก้ให้ต่อไปลิ้งมาคอลัมน์ใหม่ผ่าน>ไปลบชุดเก่าก็ได้นะ :cool:)

ตัวอย่างชุดคำสั่งบน SQL Server Management Studio
UPDATE [ชุดดาต้าเบส].[dbo].[ชื่อเทเบิ้ล]
SET [คอลัมน์ใหม่] = [คอลัมน์เก่า]
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

5
เป็น bug ของ Access 2016 และคาดว่าได้รับการแก้ไขแล้วตั้งแต่เวอร์ชั้น 16.0.6322.1000  ลองอัพเดต Office ดูนะครับ

ข้อมูลจากโพสสุดท้ายใน https://answers.microsoft.com/en-us/office/forum/office_2016-access/access-2016-report-images-still-not-displaying/a0eab74c-a299-4fa2-a38c-26bec448b041 link

ลิงค์ที่โหลด patch
แต่ให้อ่านรายละเอียดดูก่อนนะครับว่าต้องทำอะไรก่อนอัพเดตด้วยไฟล์นี้หรือไม่ แต่ผมแนะนำว่าควรอัพเดตผ่านระบบอัพเดตของ office เอง  https://support.microsoft.com/en-us/help/3114379/december-8-2015-update-for-access-2016-kb3114379 link
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

6
ห้อง MS Access / : หาค่า Min จาก Query Access
« เมื่อ: 19 พ.ค. 63 , 16:12:25 »
สมมุติเทเบิล T มีฟิลด์ ID, F1, F2, F3

select ID, F1, F2, F3 , min(F0) as FMin 
from 
(              select ID, F1, F2, F3, iif(F1 = 0, NULL, F1) as F0 from T
  union all select ID, F1, F2, F3, iif(F2 = 0, NULL, F2) as F0 from T
  union all select ID, F1, F2, F3, iif(F3 = 0, NULL, F3) as F0 from T)
group by ID, F1, F2, F3
order by ID
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

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

ลองปรับใช้ดู หวังว่าคงช่วยได้
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

8
คงต้องรีโมทไปดูหน่อยแล้วครับ
Anydesk ไปเช็คได้ไหม
 :sweat: :sweat:

ทำได้แล้วค่ะ พอดี Export Database type ที่อยู่ใน MS Access ไปเป็น SQL Server type เปลี่ยนไปหมดค่ะ ลองไปนั่งตรวจสอบและแก้ไข type ตอนนี้ล็อกอินมาแล้วได้ตามที่ต้องการแล้วค่ะ ขอบคุณมากๆนะคะ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

9
หน้าเว็บอัพโหลดภาพทำการปรับแต่งใหม่ให้รูปย่อมีขนาดใหญ่ขึ้น(เพิ่มการมองเห็น)ทำให้จำนวนรูปในหนึ่งหน้าน้อยลง จึงเพิ่มตัวเลือกหน้าดูชุดรูปภาพ จำนวน50รูปล่าสุดให้จะได้ย้อนดูรูปได้มากขึ้นเพื่อนำมาใช้ภายหลังหรือกันอัพภาพซ้ำเป็นต้นครับ :shout:


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

10
ได้ข้อมูลมาจากเฟสบุ๊กเพจ "โปรแกรมเมอร์ไทย Thai programmer" ครับ

https://goalkicker.com/?fbclid=IwAR1TjcRyaWd6r_xdj510qNJOu_3B2c9EV_AWjkJ0_lyZqxdBS3bYFHCZERo link

แนะนำเพิ่มเติมว่า สำหรับคนที่ชอบเขียนโปรแกรม ให้ศึกษาวิชา Data Structure (ส่วนนึงอยู่ในหนังสือ Algorithms) และ Algorithms เพราะจะช่วยให้ขยับโลกทัศน์ในการวิเคราะห์และหาวิธีตอบโจทย์ที่ซับซ้อนยิ่งขึ้นได้
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

11
เช็คว่ามีจำนวนเรคอร์ดใน ID เดียวกันตัวไหนที่เกิน 10  เพราะบอกมาว่ามีฟิลด์แค่ Field1 - Field10 เท่านั้น
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

12
ใช้คำสั่ง SQL ล้วนๆคงไม่ได้ ต้องใช้ VBA ด้วย โค้ดนี้ต้องปรับแก้ให้ใส่ ' ' คร่อม ถ้า data type ของ ID, Num, Fieldxx เป็น Text ด้วยนะครับ

Public Sub xxx()
    Dim DB  As DAO.Database
    Dim RS  As DAO.Recordset
    Dim LastID  As Variant
    Dim I   As Integer
   
    Set DB = CurrentDb
    Set RS = DB.OpenRecordset("select * from Table1 (order by ..., ถ้ามี)")
    Do Until RS.EOF
        If RS!ID <> LastID Then
            I = 1
            DB.Execute "insert into Table2 (ID, Field1) values (" & CStr(RS!ID) & ", " & CStr(RS!Num) & ")", dbFailOnError
        Else
            I = I + 1
            DB.Execute "update Table2 set Field" & CStr(I) & " = " & CStr(RS!Num) & " where ID = " & CStr(RS!ID), dbFailOnError
        End If
        LastID = RS!ID
           
        RS.MoveNext
    Loop
    RS.Close: Set RS = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

13
กดปุ่ม Shift ค้างไว้ตอนเปิดโปรแกรมครับ พอโปรแกรมเปิดเสร็จแล้วค่อยปล่อยนิ้วจากปุ่ม Shift
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

14
ห้อง Ms Access อื่นๆ / MS Access Runtime by อ.TTT
« เมื่อ: 02 ก.พ. 63 , 13:18:13 »
MS Access Runtime ของฟรีมีอยู่จริง? โดย อ.TTT (Access-Creator@youtube link)

ฝากกดไลท์ แชร์ และติดตามอาจารย์ในยูทูปด้วยนะครับ :love:
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

15
นี่มันข้อสอบไม่ใช่หรือ !
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

16
ขอเพิ่มเติมจาก อ. OddyWriter หน่อยครับ

อ้างถึง
แนวทางการออกแบบ Databased ที่ผมทำมานี้ เหมาะสมแล้วหรือไม่? ถ้าไม่ ผมควรจะออกแบบอย่างไรเพื่อให้ได้ตามโจทย์ที่ผมต้องการ?
เท่าที่เห็นตอนนี้
- ในระบบมีเทเบิลที่มี 2 ฟิลด์เยอะทีเดียว บางตัวจำเป็นหรือไม่ อย่างเช่นเทเบิล tblBlood ถ้าเป็นผม ผมจะกำหนดตัวเลือกลงในส่วนของ Lookup tab ของฟิลด์ tblContractor.BloodID ไปเลยว่ามีอะไรให้เลือกบ้าง เพราะ 1)กรุ๊ปเลือดตายตัวอยู่แล้ว มีไม่กี่กรุ๊ป (A, A+, A-, ...)  2)ระบบของเราไม่มีความจำเป็นต้องเก็บรายละเอียดอะไรของกรุ๊ปเลือดนั้นอีก เช่น กรุ๊ปนั้นมีแอนติเจ้น A,B,D หรือเปล่า การแยกเทเบิลออกไปในกรณีนี้ เป็นภาระแก่ระบบที่ต้องมาลิงค์ไปยังเทเบิล tblBlood อีกต่างหาก 3)ถ้าตั้งค่า BloodID เป็นอะไรที่ไม่สื่อความหมาย เช่น ตัวเลข ดังนั้นเวลาเปิดดูเทเบิล tblContractor ก็จะต้องมานั่งนึกอีกว่ามันคือเลือดกรุ๊ปอะไรกันแน่ ส่วนเทเบิลอื่นเช่น tblPlant คุณคิดว่าโรงงานจะสร้างเพิ่ม/เปลี่ยนแปลงบ่อยขนาดไหน ถ้าไม่ เมื่อไหร่ที่มีก็ค่อยมาเพิ่มใน Lookup tab ก็ได้
- เข้าใจว่าฟิลด์ xxxID ในทุกเทเบิลจะเป็น Primary Key แต่เราใช้ฟิลด์อื่นๆที่เหมาะสมกว่าเป็น Primary Key ก็ดีกว่าเพราะมัน unique คือมีค่าเดียวไม่ซ้ำกันอยู่แล้ว เช่น tblContractor เราเป็นบุคคลทั้งหมด เราก็ใช้เลขประจำตัวประชาชน (เข้าใจว่าคือฟิลด์ NationalID) มาใช้แทน
- ในความสัมพันธ์ระหว่างเทเบิล (Database Tools - Relationships) ดูความเหมาะสมว่าควรกำหนด Referential Integrity, Cascade Update, Cascade Delete ด้วยหรือไม่  (ส่วนมากผมกำหนด Referential Integrity)

อ้างถึง
Subform โดยให้เป็น Unbound SubForm
- ไม่รู้ว่าทำไมกำหนดเป็น Unbound  ถ้าจะเป็น Unbound ซึ่งเราต้องควบคุมการเขียนลงเทเบิลอื่นๆอีกที ก็ย้ายเท็กซ์บ็อกซ์และคอนโทรลต่างๆใน Unbound SubForm มาไว้บน MainForm แล้วตีกรอบเพื่อแสดงเป็นนัยว่าเป็นข้อมูลที่แยกต่างหากจาก Session ไปเลยน่าจะดูเรียบง่ายกว่า หรือจะนำมาใส่ใน Tab control บน MainForm อีกที ก็สื่อเป็นหมวดหมู่ดี

อ้างถึง
ซึ่งผมเขียน Expression ที่ txtWorkID โดยเมื่อ Dropdown เลือก NationalID เมื่อไหร่ ระบบจะไปดึง Last WorkID ของพนง.คนนั้น ๆ มาจากtblWork(Transaction Table) มาโชว์ / เกิด Error ใน Subform
- ต้องเอาโค้ดที่ทำการดึงและแปะลงฟิลด์ที่เกิด #Error นั้นมาดูครับ

อ้างถึง
การทำแบบฟอร์มเพื่อคีย์หลักสูตรที่แต่ละตำแหน่งต้องอบรมให้ครบตามกฎหมาย
- ก็ต้องมีเทเบิลหลักสูตร (tbSubject หรือเปล่า ?) ,เทเบิลตำแหน่ง (อันนี้ผมไม่รู้เทเบิลไหน สมมุติชื่อ tbP หรือเป็นแค่ฟิลด์ในเทเบิล tbWork ? สมมุติชื่อฟิลด์ F) และสร้างเทเบิลหลักสูตรที่ต้องอบรม (สมมุติชื่อ tbC) ที่มีทั้งฟิลด์ Primary Key ของเทเบิลหลักสูตรและ Primary Key ของเทเบิลตำแหน่ง(หรือแค่ฟิลด์ F ถ้าคุณไม่ได้มีเทเบิลตำแหน่งแยกออกมาต่างหาก) มานำมาตั้งเป็น Primary Key ของ tbC ดังนั้นคุณก็สร้างฟอร์มที่มี Mainform เป็น tbP และมี Subform เป็น tbC เพื่อป้อนหลักสูตรที่ต้องอบรมตามกฎหมายได้แล้ว

หมายเหตุ : Database ไม่ต้องใส่ d ต่อท้ายครับ
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

หน้า: [1] 2 3