กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
474 20
URL.หัวข้อ /
URL
ต้องการเก็บข้อมูลที่เป็นภาษาไทยจำนวนมาก(เกิน 255)
ต้องการเก็บข้อมูลที่เป็นภาษาไทยจำนวนมากกว่า 255 ตัวอักษร มีวิธีใดเก็บลงใน Access ได้บ้างค่ะ (จำเป็นต้องเก็บลงใน Database ค่ะ) ลองเปลี่ยน Data Type เป็น Memo ก็ไม่ได้ค่ะ รบกวนผู้รู้ด้วยค่ะ
ขอบคุณมากค่ะ
ขอบคุณมากค่ะ
20 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R00546
ไม่ทราบว่าใช้เวอร์ชันไหนครับ
ถ้าเป็น Access 97 บางคนก็อาจเจอปัญหาบ้าง ผมก็เคยเจอครั้งหนึ่ง คือพอพิมพ์ไปถึง 250-255 ตัวอักษรมัจะแฮ้งค์ไปเลย ผมโพสต์ตอบไว้เมื่อวานที่ http://www.thai-access.com/suphap.php?topic_id=193
ไม่ทราบว่าเป็นคนเดียวกันหรือเปล่า ลองเล่าปัญหา และความต้องการให้ฟังหน่อยซิครับ และไม่ทราบว่าได้ทำตามคำแนะนำหรือไม่ ครับ ทำแล้วมีปัญหาอะไรเพิ่มเติม จะได้แนะนำเพิ่มเติมได้ครับ
2 @R00547
อยากให้ส่งไฟล์มาให้ดูหน่อยนะครับ ส่งมาที่ อ.สุภาพก็ได้ แล้ว cc: ให้ผมด้วยครับ
codebank@maildozy.com'>
codebank@maildozy.com
ถ้าเป็นข้อมูลที่สำคัญก็ขอแค่ ตาราง กับ ฟอร์มที่ออกแบบไว้ ก็พอ ครับ
อยากเอาไปทดลองดู
3 @R00551
นุ่นใช้ Access 97 ค่ะ(จำเป็นต้องเป็น 97 ด้วยค่ะ) ปัญหาของนุ่นคือ นุ่นต้องใส่ข้อมูลที่เป็นภาษาไทยจำนวนมากลงใน Field ชื่อ A โดยมี Type เป็น Memo แต่นุ่นเจอปัญหาคือ จะมี Error แล้วให้ปิดโปรแกรมเลย และนุ่นลอง Key เป็นภาษาอังกฤษ ก็สามารถใส่จำนวนตัวอักษรได้เยอะมากเลย ก็เลยสงสัยค่ะ ว่าเป็นเพราะอะไร และมีวิธีไหนทำได้บ้าง เพราะนุ่นจำเป็นต้อง Key ข้อมูลที่เป็นภาษาไทยเข้าไป หากจะให้พิมพ์ ใน note pad แล้วนำมา paste ก็ไม่สะดวกค่ะ เพราะนุ่นมีข้อมูลเยอะมาก ไม่สะดวกต่อการใช้งานค่ะ และนุ่นลองลบ Text box แล้วลาก Field มาวางใหม่ก็ไม่ได้ค่ะ
รบกวนอาจารย์สุภาพ ด้วยค่ะ
4 @R00552
ผมได้โค้ดนี้มาจาก pantip เมื่อ 2-3 ปีที่แล้ว ขออภัยเจ้าของโค้ดนะครับ ผมจำชื่อไม่ได้ว่าใครเป็นคนโพสต์ไว้
เป็นการเรียกเปิด NodePad เพื่อใช้พิมพ์หรือแก้ไขข้อความ โดยไม่ต้อง copy แล้ว paste ให้ดูโค้ดใน Module และ ผมเรียกโค้ดโดยการ double click ที่ Text Box เป้าหมาย
ถ้ามี Memo Field หลายที่ ก็ให้ทำเมื่อกันครับ
ตัวอย่างอยู่ที่ http://agserver.kku.ac.th/basiceng/memofield97.zip ครับ
5 @R00555
ขอบคุณอาจารย์สุภาพและคุณ Access hotline มากเลยค่ะ
6 @R00557
ลองทำแล้วค่ะ แต่มี Error ที่ CallNotePad ค่ะ แต่ลอง run ตัวอย่างที่อาจารย์ส่งมาให้แล้ว ทำได้ค่ะ แต่ของนุ่นติด Error ค่ะ ทั้งๆที่นุ่นกำหนด Field เป็น Memo แล้วน่ะค่ะ ลอง copy form ของอาจารย์มาใส่และเปลี่ยนให้มาเป็น table ของนุ่นแล้ว ก็ยังมี Error ค่ะ แต่ถ้าสร้างใหม่เลยจะทำใด้ แต่ตอนเก็บจะแฮงค์ค่ะ รบกวนอาจารย์แนะนำนุ่นด้วยค่ะ
7 @R00558
Error ว่ายังไงครับ
8 @R00559
Error ในส่วน
Private Sub A_DblClick(Cancel As Integer) บรรทัดนี้เป็นสีเหลืองค่ะ
callnotepad Me.ActiveControl บรรทัดนี้มีแถบสี้น้ำเงินตรง callnotepad และไม่เป็นตัวใหญ่เหมือนของอาจารย์ค่ะ (ของอาจารย์ CallNotePad Me.ActiveControl ค่ะ)
9 @R00560
ลองเปลี่ยนเป็น
callnotepad Me.A ดูครับ
อย่าลืมเอาโค้ดในส่วนของ Module ชื่อ modCallNotePad ซึ่งมีโค้ดข้างล่างนี้ไปด้วยนะครับ
Private Const STARTF_USESHOWWINDOW& = &H1
Private Const NORMAL_PRIORITY_CLASS = &H20&
Private Const INFINITE = -1&
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
lpStartupInfo As STARTUPINFO, lpProcessInformation As _
PROCESS_INFORMATION) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal _
hObject As Long) As Long
Public Sub ShellWait(Pathname As String, Optional WindowStyle As Long)
Dim proc As PROCESS_INFORMATION
Dim start As STARTUPINFO
Dim ret As Long
' Initialize the STARTUPINFO structure:
With start
.cb = Len(start)
If Not IsMissing(WindowStyle) Then
.dwFlags = STARTF_USESHOWWINDOW
.wShowWindow = WindowStyle
End If
End With
' Start the shelled application:
ret& = CreateProcessA(0&, Pathname, 0&, 0&, 1&, _
NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc)
' Wait for the shelled application to finish:
ret& = WaitForSingleObject(proc.hProcess, INFINITE)
ret& = CloseHandle(proc.hProcess)
End Sub
Function CallNotePad(ctl As Control)
'ÇÔ¸Õãªé ãËéãÊè =CallNotePad(<ª×èÍà·ç¡«ìºÍ¡«ì>) äÇéã¹ Event OnDoubleClick ¢Í§ Text box à»éÒËÁÒÂ
Dim strText As String
Dim strString As String
If Dir("c:\txtTemp.txt") <> "" Then Kill "c:\txtTemp.txt"
Open "c:\txtTemp.txt" For Output Shared As #1
If Not IsNull(ctl.Value) Then
strText = ctl.Value
Print #1, strText
End If
Close #1
ShellWait "NOTEPAD.EXE c:\txtTemp.txt", vbMaximizedFocus
Open "c:\txtTemp.txt" For Input As #1
strText = ""
Do While Not EOF(1)
Input #1, strString
strText = strText & strString
Loop
Close #1
ctl = "" & strText
End Function
10 @R00561
นุ่นได้ copy code ใน module ของอาจารย์มาแล้วค่ะ สามารถเปิด notepad ได้ค่ะ แต่ว่าตอน save หรือ ปิด notepad โปรแกรมนุ่นจะแฮงค์เลยค่ะ อาจารย์ เป็นเพราะสาเหตุใดคะ แต่นุ่นลองทำในตัวอย่างของอาจารย์ ไม่แฮงค์ค่ะรบกวนอาจารย์อีกครั้งด้วยค่ะ
11 @R00562
ให้ลองลบ Text Box ของ Memo เดิมในฟอรม์ออก แล้วลากฟีลด์ใส่เข้าไปใหม่ดูครับ
แล้ว Save จากนั้นให้ลอง Compact ด้วย ลองดูครับ
12 @R00563
ลองลบ Text Box ที่เป็น Memo ออกแล้ว ลาก Field มาใส่ใหม่แล้ว Save และ Compact แล้ว เปิดได้ค่ะ แต่เวลา Save ข้อมูล แฮงค์ค่ะ อาจารย์
13 @R00564
ลองแบบนี้นะ
1. สร้าง db เปล่าขึ้นมา 1 อัน แล้วโอน objects ทุกอย่างจาก db ตัวที่มีปัญหา โดยไปที่เมนู File>Get External Data..>Import>มองหาไฟล์ตัวเดิม แล้วคลิกเลือก> เมื่อตารางเก่าเปิดแล้ว ให้เลือก Select All โดยเริ่มตั้งแต่ Tables, Queries, Forms, ..., Module>OK.
2. Compact อีกที่
ถ้ายังไม่หาย ให้ zip ไฟล์ตัวที่มีปัญหา แล้วส่งมาให้ผมที่ kaeg_chaiya@hotmail.com ครับ
14 @R00629
เรียนอาจารย์สุภาพ นุ่นส่งไฟล์ไปแล้วนะคะ ไม่ทราบว่าได้รับหรือไม่ค่ะ
15 @R00630
ได้รับแล้วครับ
ขอคำอธิบายเพิ่มเติมด้วยครับว่าเข้าไปตรงไหน แล้วเกิดปัญหาอย่างไร ให้ละเอียดหน่อยนะครับ
16 @R00668
ส่วนที่เป็น Field สภาพปัจจุบัน มี Type เป็น Memo และอาจารย์ให้ Modules สำหรับเปิด Notepad ค่ะ เปิดได้แต่ไม่สามารถเก็บข้อมูลที่เกิน 255 ได้ค่ะ เวลา Save เครื่องจะแฮงค์ค่ะ
17 @R00752
เรียนอาจารย์สุภาพค่ะ นุ่นขอข้อสรุปในการเก็บข้อมูลภาษาไทย Type Memo เกิน 255 ตัวอักษรด้วยค่ะ เนื่องจากนุ่นจำเป็นต้องเก็บข้อมูลมากจริงๆ หากมีวิธีอื่นที่ทำได้ รบกวนอาจารย์สุภาพ ช่วยแนะนำด้วยค่ะ
ขอบคุณมากค่ะ
นุ่น
18 @R00754
ลองใช้ Access2000 ดูครับ
ผมใช้แล้ว ไม่พบปัญหา ครับ
ข้อมูลผมอยู่ใน MS Word
ผม Copy จาก MS Word ไป Note Pad (.TXT)
แล้ว Copy จาก NotePad ไปวางใน Field Meno ก็ใช้ได้แล้วครับ
ลองดูนะครับ
Suchat
ชลบุรี
19 @R00755
ผมได้โค้ดนี้มาจาก pantip เมื่อ 2-3 ปีที่แล้ว ขออภัยเจ้าของโค้ดนะครับ ผมจำชื่อไม่ได้ว่าใครเป็นคนโพสต์ไว้
เป็นการเรียกเปิด NodePad เพื่อใช้พิมพ์หรือแก้ไขข้อความ โดยไม่ต้อง copy แล้ว paste ให้ดูโค้ดใน Module และ ผมเรียกโค้ดโดยการ double click ที่ Text Box เป้าหมาย
ถ้ามี Memo Field หลายที่ ก็ให้ทำเมื่อกันครับ
ตัวอย่างอยู่ที่ http://agserver.kku.ac.th/basiceng/memofield97.zip ครับ
ผมแสดงข้อความข้างบนนี้อีกทีเพราะ ผมทำตามแล้วก็ใช้ได้ไม่มีปัญหานะครับ ผมเองก็ใช้ Access97 เหมือนคุณนุ่นครับ ผมว่าอาจจะเป็นเพราะ การลง Window หรือ MS Office แบบไม่สมบูรณ์ ก็เป็นได้ครับ
20 @R00756
ในตัวอย่างที่ส่งมาให้ผมดู ผมลองพิมพ์ดูก็ได้ ไม่มีปัญหาอะไร
และก็ไม่เห็นส่วนโค้ดที่ผมแนะนำด้วย ไม่ทราบได้เอาโค้ดมาใส่หรือยัง
หรือเป็นโปรแกรมคนละตัวกัน
อยากให้อธิบายว่า เข้าฟอร์มไหน แล้วเรียกใช้ฟีลด์ Memo ตัวไหนที่สร้างปัญหาครับ
Time: 0.1544s