บอร์ดเรียนรู้ Access สำหรับคนไทย
Thai Access Webboard => ห้อง MS Access => ข้อความที่เริ่มโดย: Earth ที่ 15 พ.ค. 61 , 09:48:22
-
สอบถามค่ะ
อยากทราบว่า Access สามารถนำข้อมูลจากตาราง มาสร้างQRCode ในReportได้ยังไงบ้างคะ
-
เจอวิธีทำจากลิงค์นี้ค่ะ จะลองทำตามดู
แต่อยากทราบว่าไฟล์ที่ใช้เป็น QR Codeสำหรับ 32บิต และ64บิต
ถ้าเครื่องเราเป็น64บิต ใช้ไฟล์64บิต เมื่อทำโปรแกรมเสร็จSaveเป็น .accde
เมื่อนำไปเปิดเครื่องลอื่นที่เป็น 32บิต สามารถเปิดได้ไหม หรือต้องแก้ไขกันเกิดกรณีนี้ยังไงคะ
ตอนเขียนโค้ดตรงนี้จะระบุยังไง
(https://www.thai-access.com/tiupld/images/p8r5p8-755409.jpg)
-
คือจะประมาณว่า ถ้าโปรแกรม MS Access เป็นแบบ
32bit ให้ใช้ไฟล์ QRCode_x86.dll
64bit ให้ใช้ไฟล์ QRCode_x64.dll
ไม่เกี่ยวกับ Windows ครับ Windows จะเป็น 32bit หรือ 64bit ก็ได้ แต่ทว่า โฟลเดอร์ระบบมาตรฐานของ Windows 32bit กับ 64bit มันใช้โฟลเดอร์คนละตัวกันคือ
Windows 32bit เราต้องก๊อปปี้ใส่ในโฟลเดอร์ Windows\system32
Windows 64bit เราต้องกีอปปี้ใส่ในโฟลเดอร์ Windows\sysWOW64
สรุปคือ: ถ้าคุณใช้ MS Access 64bit ให้ก๊อปไฟล์ QRCode_x64.dll ไว้ใน Windows\sysWOW64 ได้เลย (เพราะ Access 64bit ต้องใช้ Windows 64bit อยู่แล้ว) แต่หากคุณใช้ MS Access 32bit ต้องดูว่ารันบน Windows 32bit หรือ 64bit ถ้า Windows เป็น 32bit ก็ใช้ไฟล์ QRCode_x86.dll ก๊อปปี้ใส่ในโฟลเดอร์ Windows\system32 แต่หากรันบน Windows 64bit ก็ก๊อปปี้ไฟล์ QRCode_x86.dll ใส่ในโฟลเดอร์ Windows\sysWOW64 แทนครับ
ปล. จริงๆแล้วมันสามารถเขียนโค้ดให้รัน Dll ไฟล์จากในโฟลเดอร์ที่เรากำหนดได้เลยโดยไม่ต้องไปก๊อปใส่เครื่องให้ยุ่งยาก รวมทั้งฟอนต์ด้วย แต่ต้องใช้การเขียนโค้ดอีก ซึ่งมันจะยืดหยุ่นกว่ามาก ไม่ต้องทั้งเพิ่มฟอนต์ QRCode และ ไฟล์ dll ลงในเครื่องเลย สามารถเรียกรันในโฟลเดอร์เดียวกับฐานข้อมูลเราได้เลย แต่มันต้องเขียนโค้ดอีกพอสมควร ในคลิปที่ผมทำเน้นความง่าย เลยไม่ได้ทำในส่วนนี้ให้ดูครับ
-
***สอบถามเพิ่มเติมค่ะ
ถ้าต้องการให้ QR code สามารถอ่านรองรับภาษาญี่ปุ่นได้ด้วยมีวิธียังไงบ้างคะ
เช่นรหัส 050078801CS ギャクシベンスプール สามารถสร้างQR Code ได้
แต่ตอนอ่าน ไม่รองรับภาษาญี่ปุ่น จะแสดงเป็น ???แทนค่ะ
อยากทราบว่าโค้ดตรงโมดูลนี้ ต้องเปลี่ยนชนิดเป็น Shift_JIS ตรงไหน
Public Function QRGen(Plain_Text As String)
Dim RowCount As Long, ColCount As Long, i As Long, j As Long
Dim Message As String, EncodedMsg As String
Message = Plain_Text
Call QRCodeEncode(Message, Version, Level, Mask)
RowCount = QRCodeGetRows()
ColCount = QRCodeGetCols()
For i = 1 To RowCount
For j = 1 To ColCount
EncodedMsg = EncodedMsg & Chr(QRCodeGetCharAt(i - 1, j - 1))
Next j
EncodedMsg = EncodedMsg & vbCrLf
Next i
QRGen = EncodedMsg
End Function
ปล. ด้านล่างนี้เป็นตัวอย่างที่เป็นปัญหาที่เจอมาค่ะ
I'm trying to encode with Shift_JIS but my qr code does not match the
output shown by the Zxing Code Generator Page (http://
zxing.appspot.com/generator/).
The test string is:
1234567890お客様名ABCDEabcdeアイウエオ鰺鯵
My code looks like this:
QRCode qrcode = new QRCode();
Hashtable<EncodeHintType, String> hints = new
Hashtable<EncodeHintType, String>(2);
hints.put(EncodeHintType.CHARACTER_SET, "Shift_JIS");
Encoder.encode(contents, ecLevel, hints, qrcode);
My result matches the UTF-8 qr code generated on the generator page
instead of the Shift_JIS qr code.
I've tried encoding the string to Shift_JIS before the Encoder.encode
call but that results in the same UTF-8 qr code.
-
จริงๆแล้วไฟล์ DLL ตัวนี้ ผมใช้กับโปรแกรมอื่นที่รองรับ มันสามารถแสดงเป็นภาษาไทย หรือ ญี่ปุ่นได้หมดนะครับ แต่พอมาใช้กับ MS Access มันกลับใช้ได้แค่ภาษาอังกฤษเท่านั้นครับ ยังไม่ทราบว่าเพราะอะไร สงสัยว่าอาจเป็นที่ตัว VBA ของ MS Access เองครับ
คราวนี้ผมเคยอ่านเจอกระทู้เก่ากระทู้นึงของคุณ kamsuk เป็นโค้ดที่รองรับภาษาญี่ปุ่นได้ ไม่ต้องใช้ไฟล์ไลบารี่หรือฟอนต์ใดๆ เขียนโค้ดอย่างเดียว แต่สามารถใช้กับรายงานเท่านั้น ไม่สามารถแสดงบนฟอร์มได้ ยังไงรองศึกษาดูที่กระทู้นี้ครับ https://www.thai-access.com/yeadram_view.php?topic_id=5576
(https://www.thai-access.com/tiupld/images/p9bpa3-961396.jpg)
-
ตอนนี้ทำตามกระทู้นี้ สามารถทำได้แล้วค่ะ
https://www.thai-access.com/yeadram_view.php?topic_id=5576
แต่QR codeที่สแกนอ่านออกมาแล้ว มันเป็นฟร้อนญี่ปุ่นทั้งหมดทุกDigit
ซึ่งต้องการให้ตัวอักษรที่เป็นตัวเลขหรือภาษาอังกฤษ แสดงเป็นฟร้อนภาษาอังกฤษ สามารถทำได้ไหมคะ
ตัวอย่าง ข้อมูลที่อ่านได้จาก QRคือ
220DB031−677001CSギャクシベンスプール Remark
** จะเห็นว่าความกว้างของตัวอักษรภาษาอังกฤษกับตัวเลขมันจะใหญ่กว่าฟร้อนปกติ เพราะค่าที่อ่านได้อยู่ในรูปแบบฟร้อนภาษาญี่ปุ่น
ซึ่งอยากให้แสดงฟร้อนแบบนี้ ที่ภาษาอังกฤษและตัวเลขเป็นฟร้อนปกติ สามารถทำได้ไหมคะ
220DB031-677001CSギャクシベンスプール Remark
-
1. สอบถามอาจารย์ทุกท่านค่ะ จากโค้ดด้านล่างนี้ จะเพิ่มโค้ดให้ผลลัพธ์แปลงUnicode ให้เป็น UTF-8 หรือ Shift_JISได้อย่างไรบ้างคะ
Option Compare Database
Option Explicit
Private Declare PtrSafe Sub QRCodeEncode Lib "QRCode_x86.dll" _
(ByVal Message As String, ByVal version As Integer, ByVal level As Integer, ByVal Mask As Integer)
Private Declare PtrSafe Function QRCodeGetRows Lib "QRCode_x86.dll" () As Integer
Private Declare PtrSafe Function QRCodeGetCols Lib "QRCode_x86.dll" () As Integer
Private Declare PtrSafe Function QRCodeGetCharAt Lib "QRCode_x86.dll" (ByVal RowIndex As Integer, ByVal ColIndex As Integer) As Integer
Private Const version = 0
Private Const level = 0
Private Const Mask = 0
Public Function QRGen(Plain_Text As String)
Dim RowCount As Long, ColCount As Long, i As Long, j As Long
Dim Message As String, EncodedMsg As String
Message = Plain_Text
Call QRCodeEncode(Message, version, level, Mask)
RowCount = QRCodeGetRows()
ColCount = QRCodeGetCols()
For i = 1 To RowCount
For j = 1 To ColCount
EncodedMsg = EncodedMsg & Chr(QRCodeGetCharAt(i - 1, j - 1))
Next j
EncodedMsg = EncodedMsg & vbCrLf
Next i
QRGen = EncodedMsg
End Function
2. สอบถามอาจารย์เพิ่มเติมค่ะ
ถ้านำโค้ดมาใช้กับโปรแกรมอื่นที่รองรับภาษาญี่ปุ่นที่ไม่ใช่Access ซึ่ง vb.net สามารถแสดงได้ไหมคะ
จริงๆแล้วไฟล์ DLL ตัวนี้ ผมใช้กับโปรแกรมอื่นที่รองรับ มันสามารถแสดงเป็นภาษาไทย หรือ ญี่ปุ่นได้หมดนะครับ แต่พอมาใช้กับ MS Access มันกลับใช้ได้แค่ภาษาอังกฤษเท่านั้นครับ ยังไม่ทราบว่าเพราะอะไร สงสัยว่าอาจเป็นที่ตัว VBA ของ MS Access เองครับ
คราวนี้ผมเคยอ่านเจอกระทู้เก่ากระทู้นึงของคุณ kamsuk เป็นโค้ดที่รองรับภาษาญี่ปุ่นได้ ไม่ต้องใช้ไฟล์ไลบารี่หรือฟอนต์ใดๆ เขียนโค้ดอย่างเดียว แต่สามารถใช้กับรายงานเท่านั้น ไม่สามารถแสดงบนฟอร์มได้ ยังไงรองศึกษาดูที่กระทู้นี้ครับ https://www.thai-access.com/yeadram_view.php?topic_id=5576
(https://www.thai-access.com/tiupld/images/p9bpa3-961396.jpg)
-
ความคิดส่วนตัวผมว่าไม่น่าจะได้นะครับ เพราะฟิลด์ของ MS Access มันจะสามารถกำหนดฟอนต์ได้เพียงอย่างเดียวเท่านั้น ยกเว้นกำหนดให้เป็น Rich Text ซึ่งมันก็คงไม่รองรับกับ QR แบบนี้อีก เลยคิดว่าไม่น่าจะได้นะครับ ต้องเป็นฟอนต์ญึ่ปุ่นทั้งหมด ส่วนเรื่องอื่นผมตอบใน YouTube แล้วนะครับ คิดว่าคงเป็นคนเดียวกันที่ถาม