สมัครสมาชิก

แสดงกระทู้

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] 4 5 6 ... 10
33
ห้อง MS Access / : โปรแกรม Access error Query " is corrupt
« เมื่อ: 21 พ.ย. 62 , 10:33:20 »
ลองรีเซ็ตเครื่องดูหรือยังครับ ถ้ายังไม่ได้จริงๆ ก็ลบ OFFICE แล้วลงใหม่ครับ และปิดระบบ WINDOWS UPDATE ด้วยนะครับ


34
ห้อง MS Access / : โปรแกรม Access error Query " is corrupt
« เมื่อ: 21 พ.ย. 62 , 09:36:12 »
.

35
ใช้ IF Check สถานะ textbox ก่อนก็ได้ครับ เช่น

Private Sub Command107_Click()
If IsNull(Me.txt_Start) Or IsNull(Me.txt_End) Then
MsgBox "กรุณาระบุวันที่ให้เรียบร้อยก่อน", vbInformation, "แจ้งเตือน!!"
Else
ใส่โค้ดค้นหาอันเดิมตรงนี้ได้เลย
End If
End sub

หรือเปลี่ยนโค้ดมาใช้แบบนี้ก็ได้ครับเป็นการกำหนด RecordSource
ผมสมมุติตารางของข้อมูลชื่อ Table1


Private Sub Command107_Click()
If IsNull(Me.txt_start) Or IsNull(Me.txt_end) Then
MsgBox "กรุณาระบุวันที่ให้เรียบร้อยก่อน", vbInformation, "แจ้งเตือน!!"
Else
Me.RecordSource = "SELECT * FROM Table1 WHERE (((Table1.[Posting Date]) Between [forms]![frm_service invoice]![txt_start] And [forms]![frm_service invoice]![txt_end])) ORDER BY Table1.[Posting Date];"
End If
End Sub

36
อ้างถึง
ข้อมูลเบื้องต้นผมแบ่งตารางออกเป็น 2 ส่วน คือ id อยู่ตารางหนึ่ง คะแนนอยู่อีกตารางหนึ่ง โดยอีกตารางหนึ่งเชื่อมความสัมพันธ์ โดย id_person เท่าที่ผมทำมันแสดงข้อมูลออกมาเฉพาะที่มีไอดีตรงกันในตาราง 2 (score) หากคนที่ไม่มีคะแนนในตารางที่ 2 ก็จะไม่แสดงข้อมูลออกมา (อยากให้แสดงทุกคนเลยแม้นไม่มีไม่คะแนน )

สร้างคิวรี่ใส่ SQL คิวรี่แบบนี้

โค๊ด: [Select]
SELECT tblID_PERSON.ID_PERSON, tbl_SCORE.SCORE
FROM tbl_SCORE RIGHT JOIN tblID_PERSON ON tbl_SCORE.ID_PERSON = tblID_PERSON.ID_PERSON;

ผลลัพธ์ที่ได้


37
เหมือนกับการเช็ควันที่ปัจจุบัน กับ วันที่หมดอายุ ใช่ไหมครับ ว่าถ้าไม่ครบกำหนดแล้วเหลือกี่วัน ถ้าครบกำหนดแล้วก็แสดงว่าบัตรหมดอายุ

ผมสมมุติชื่อ Field ดังนี้

Field ชื่อ CustomerName  Datatype Text  เก็บชื่อลูกค้า
            OutCardDate     Datatype Date&Time  เก็บวันออกบัตร
            ExpireCardDate Datatype Date&Time  เก็บวันหมดอายุ

Table ชื่อ Table1

ที่คิวรี่ เอา sql นี้ไปวางได้เลย
โค๊ด: [Select]
SELECT table1.CustomerName, table1.OutCardDate, table1.ExpireCardDate, IIf(Date()<[ExpireCardDate],"เหลือ " & [ExpireCardDate]-Date() & " วัน","บัตรหมดอายุ") AS สถานะ
FROM table1;

38
ปกติเขาใส่เครื่องหมาย * นะครับ

SELECT TbContact.NameTH, TbContact.ID_Contact
FROM TbContact
WHERE (((TbContact.NameTH) Like "*เ*"));

39
เช่น

นายก   1   2   3   4
นายข   3   5   6   7
นายค   8   9   0   10

อยากรู้ยอดของแต่ละคนว่ารวมเท่าไหร่

ขอความกรุณาอาจารย์ทุกท่านด้วยครับ

สมมุติฟิลล์ ์CustomerName  / Field1 / Field2 / Field3 / Field4
ตารางชื่อ Table1

ก็จะได้
CustomerName  / Field1 / Field2 / Field3 / Field4 / Sum:nz(Field1,0)+nz(Field2,0)+nz(Field3,0)+nz(Field4,0)

ในรูปแบบ Sql ก็แบบนี้ครับ
โค๊ด: [Select]
SELECT Table1.CustomerName, Table1.Field1, Table1.Field2, Table1.Field3, Table1.Field4, Nz([Field1],0)+Nz([Field2],0)+Nz([Field3],0)+Nz([Field4],0) AS [Sum]
FROM Table1;

40
คือเขียนคิวรี่ ใช้คำสั่ง count แล้วอยากให้แสดงค่าที่ค้นไม่เจอให้=0แบบนี้ต้องทำไงครับ หรือต้องไปกำหนดที่ textbox ครับให้มี defult =0 (ตรงนี้ต้องไปตั้งค่ายังไงครับ) ขอบคุณครับ

ไม่ค่อยเข้าใจโจทย์ครับ ลองอธิบายเพิ่มเติมนิดนะครับ

อยากแทนค่าด้วยเลข 0 บางทีอาจจะใช้ Nz Fuction มาช่วยให้แสดง 0 ถ้าเป็นค่าว่างเช่น Count:Nz([CountField1],0)

41
จากการไปทดลองค้นหาวิธีดูแล้ว วิธีที่น่าจะทำได้คือต้องซื้อ google text to speech thai api หรือ Google Cloud TTS มาใช้ครับเนื่องจากเป็นภาษาไทยด้วยครับเลยทำยาก

ส่วนวิธีอื่นๆ ต้องให้อาจารย์ TTT มาแนะนำให้แล้วละครับ ท่านอาจจะช่วยได้ครับ :grin: :grin:

@TTT

42
ห้อง MS Access / : Access Message Box ไม่ขึ้น
« เมื่อ: 15 พ.ย. 62 , 15:43:05 »
1.ต้องเปิดใช้งาน activex ก่อนด้วยนะครับ



2.เปิดใช้งาน มาโคร



หรือดูจากเว็บนี้ครับ


https://www.ugetproject.com/wp/ms-office-access/%E0%B8%95%E0%B8%B1%E0%B9%89%E0%B8%87%E0%B8%84%E0%B9%88%E0%B8%B2%E0%B9%83%E0%B8%AB%E0%B9%89vba%E0%B8%97%E0%B8%B3%E0%B8%87%E0%B8%B2%E0%B8%99.html link

43
ห้อง MS Access / : Access Message Box ไม่ขึ้น
« เมื่อ: 15 พ.ย. 62 , 15:34:30 »
อีกอย่าง Event AfterUpdate() นั้น ถ้าสมมุติระบุ 4 ไว้แล้วมีการแจ้งเตือนปกติ
พอเปิดฟอร์มขึ้นมาใหม่แล้วไม่ได้ระบุตัวเลขใหม่ Event นี้จะไม่ทำงานครับ

ถ้าจะดักข้อผิดพลาดนี้น่าจะต้องว่างโค้ดไว้ใน Event On Open  ด้วยครับเช่น

โค๊ด: [Select]
Private Sub Form_Open(Cancel As Integer)
Call CheckLow
End Sub

Private Sub Text0_AfterUpdate()
Call CheckLow
End Sub

Sub CheckLow()
Dim Msg As String
Dim Report As Integer
Msg = "สไกล้หมดแล้ว"
Report = Me.Text0
If Report < 5 Then
 MsgBox (Msg), vbInformation, "Status"
 End If
End Sub

44
ห้อง MS Access / : Access Message Box ไม่ขึ้น
« เมื่อ: 15 พ.ย. 62 , 15:18:40 »
ต้อง Dim ...... as ....... ครับ

การกำหนดให้ค่า มากกว่า หรือ น้อยกว่า ได้จะต้องเป็นค่าตัวเลข นะครับเช่น

Private Sub Text0_AfterUpdate()
Dim Msg as string
Dim  Report as Integer
Msg = "สไกล้หมดแล้ว"
Report = Me.Text0
If Report < 5 Then
 MsgBox (Msg), vbInformation, "status"
 End If
End Sub

45
อ้างถึง
ถ้าทำตารางแปลงนาเป็น 1 ตาราง แล้วใน field ฤดูกาลผลิตลง แบบความคิดเห็นที่ 2  จะต้องทำเทียบเนื้อที่อย่างไร
- และอีก 1 อย่าง คือถ้าทำตารางเดียว จะใช้ อะไรเป็น คีย์หลัก เพราะรหัสแปลงก็จะซ้ำกัน

ถ้าสังเกตุดีๆ ข้อมูล FieldID MemberID ตัวเดียวกัน ใช้ GroupBy ได้เลย ถ้ามันเหมือนกันก็จะเหลืออันเดียวแล้วครับ

ส่่งตัวอย่างมาทางไลน์ครับผมทำให้

46
ข้อมูลประจำปีมาจาก 2 ตารางใช่หรือเปล่าครับเช่น Area2018 กับ Area2019
สร้าง Union Query และ Group By Field ID กับ MEMBER_ID  ครับ

หรือการ Join Table เชื่อมความสัมพันธ์ของ Field ID และ MEMBER_ID ของสองตารางเข้าด้วยกันและดึง Area...... ของทั้งสองปีลงมา
และสร้าง Field ลบจำนวนแปลงขึ้นมา  /  ส่วนของ remake ใช้การดึงค่าที่มีมาแสดงทั้งสองอย่างได้
เช่น area2018 Remark1 ระบุ  ขุดบ่อปลา
      area2019 Remark2 ระบุ  ตัดถนนเข้าสวน

ตรงField Remark เราก็ระบุเช่น SRemark:Remark1 & "," & Remark2
ข้อมูลที่แสดงจะได้เป็น ขุดบ่อปลา,ตัดถนนเข้าสวน เป็นต้น
หรือถ้าจะแสดง remark แค่ปีล่าสุดเท่านั้นก็ดึง remark2 มาแสดงได้เลย

หรือถ้าไม่อยาก Fix ปีทั้งสองไว้แบบตายตัว จะสร้างฟอร์มกำหนดปีที่จะแสดงข้อมูลก็ทำได้เหมือนกันครับ
โดยใช้การUnion Query ข้อมูลทั้ง 2 ตารางเข้าด้วยกันและกรองข้อมูลจาก Control ระบุปีมาก่อนแล้วสร้างคิวรี่ย่อยในการแสดงข้อมูล

47
มันน่าจะใช้ google translate มาประยุกต์ใช้ได้นะครับ เดี่ยวลองหาวิธีก่อน เพราะถ้าให้มันบอกลำดับคิวคงไม่ยาก ใช้ไฟล์เสียงทำได้
แต่ถ้าเป็นชื่อคน คงต้องทำวิธีอื่น

48
ผมอยากทราบว่าaccess สามารถเขียนให้โปรแกรมอ่านตัวหนังสือที่อยู่ในฐานข้อมูลออกเป็นเสียงพูดได้หรือไม่ครับ
หากได้มีวิธีการหรือขั้นตอนในการทำอย่างไรครับ ขอคำชี้แนะหน่อยนะขอรับ ขอบพระคุณมากๆขอรับ



เป็นภาษาไทย หรืออังกฤษ ครับ
ถ้าภาษาอังกฤษลองดูตัวอย่างนี้ครับ

ที่ Module ใส่โค้ดนี้เข้าไป

Option Compare Database
Option Explicit
Function MySpeak(str As String)
Dim objVo As Object
Set objVo = CreateObject("SAPI.SpVoice")
objVo.Speak str
End Function

ที่ฟอร์ม สร้าง textbox ชื่อ txtSpeak กรอกข้อความภาษาอังกฤษ แล้ว สร้างปุ่มขึ้นมา 1 ปุ่มใส่โค้ดนี้เข้าไป

Private Sub CmbVoice_Click()
Call MySpeak(txtSpeak)
End Sub

ตัวอย่างด้านล่าง

หน้า: 1 2 [3] 4 5 6 ... 10