แสดงกระทู้

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 ... 10 11 12 [13] 14 15 16 ... 46
217
สมมุติตารางชื่ิอ Mytable
มีField ราคารวมภาษีชื่อ ราคารวมภาษี
SQL จะได้เป็น

SELECT IIf([ราคารวมภาษี]<=10000,0,IIf([ราคารวมภาษี] Between 10001 And 15000,[ราคารวมภาษี]*0.01,IIf([ราคารวมภาษี] Between 15001 And 20000,[ราคารวมภาษี]*0.02,IIf([ราคารวมภาษี]>20000,[ราคารวมภาษี]*0.03)))) AS ส่วนลด, Mytable.[ราคารวมภาษี]
FROM Mytable;

218
Event Form_Current ท่านไม่ได้ตั้งให้โค้ดทำงานครับ

ผมแก้ให้แล้วลองดูในไฟล์แนบ

219
อ้างถึง
ทำไมค่า -1 หรือ 0 ในฟิลด์  Clam_vat จึงไม่ทำให้ caption เคลมภาษีไม่เปลี่ยนตาม Value ใน Clam_vat ครับ    00/00 ไม่เคลมภาษี (สีดำ)   mm/yy เคลมภาษี (สีแดง)

ผมงงกับคำถามครับ  :cry: :cry:

220
ใช้การ dlookup ได้ครับ
ใช้ event form current ในการทำงานเมื่อมีการเปลี่ยนเรคคอร์ดก็จะแสดงตามค่าที่มีใน Clam_Vat



Private Sub Form_Current()
Call ClamVatStatus
End Sub

Sub ClamVatStatus()
Dim tgClam As Boolean
tgClam = Nz(DLookup("Clam_vat", "voucher_b", "voucher_b_id ='" & voucher_b_id & "'"))
If tgClam = True Then
Me.Toggle192.Caption = "เคลมภาษี"
Me.Toggle192.ForeColor = vbGreen
ElseIf tgClam = False Then
Me.Toggle192.Caption = "ไม่เคลมภาษี"
Me.Toggle192.ForeColor = vbRed
End If
End Sub

ส่วนอีเว้น click ก็นำมาใช้ด้วยเมื่อมีการกด อัพเดทบนฟอร์มจะได้แสดงทันที

221
ขอมี bottom ป้องกันการหลุดของฝ่ายบัญชี เปลี่ยนข้อความ เปลี่ยนสี เวลาคลิกปุ่ม ครับ

ใช้ .caption เพื่อใส่ข้อความ
และ .Forcolor สำหรับ เปลี่ยนสีข้อความ
Toggle ไม่สามารถเปลี่ยน .BackColor ได้เพราะใช้ access รุ่นเก่า
ถ้ารุ่นใหม่ๆ จะเปลี่ยนได้


โค้ดจะได้
โค๊ด: [Select]
Private Sub Toggle192_Click()
If Me.Toggle192 = False Then
Me.Toggle192.Caption = "ไม่เคลมภาษี"
Me.Toggle192.ForeColor = vbRed

ElseIf Me.Toggle192 = True Then
Me.Toggle192.Caption = "เคลมภาษี"
Me.Toggle192.ForeColor = vbGreen
End If
End Sub
ส่วนสีต่างๆ ก็มีมากมายหามาใส่เอาได้เลย เช่น Vb... (ชื่อสี)  หรือ RGB(...,...,...)
เช่น = RGB(255, 0, 0) คือสีแดง
         RGB(0, 0, 0)   สีดำ
         RGB(255, 255, 0) สีเหลือง
         RGB(255, 255, 255) สีขาวเป็นต้น

222
อ้าว ลบข้อมูลออกทำไมอะครับ เผื่อจะมีประโยชน์กับคนอื่นในอนาคต

ยังแสดงผลไม่ถูกต้องตามต้องการครับ อาจจะทำให้คนเข้าใจผิด
ถ้าแก้ไขแล้ว ผมจะเพิ่มให้แน่นอนครับ
อธิบายเพิ่มเติมให้หน่อยนะครับ
"เลขที่ที่กำหนดขึ้นใหม่" อันนี้ระบุในฟอร์มหรือเปล่าครับ

อ้างถึง
ตอนนี้ผมต้องการเพิ่มข้อมูลเลข Serial ลงใน BillDetail ซึ่งแตกต่างกันในแต่ละระเบียน
"เลขซีเรียล" มาจากไหนมีวิธีการระบุอย่างไร
เราสามารถเปิด Recordset ทั้ง 2 ขึ้นมา แล้วใช้ Loop มาทำกับทุกระเบียนได้ครับ แต่ต้องรู้วิธีได้มาของ เลขที่ที่กำหนดขึ้นใหม่ และ เลขซีเรี่ยลที่กำหนดขึ้น ก่อนว่าสร้างมาอย่างไร





223
เอา Like ออกไปสิครับน้า
Like เราจะใช้ก็ต่อเมื่อต้องการข้อมูลที่มีอาจรายละเอียดบางส่วนปะปนมาได้

SQL เฉพาะ 00/00 ก็จะเป็น

โค๊ด: [Select]
SELECT voucher_b.voucher_b_id, voucher_b.date_buy, voucher_b.period_vat
FROM voucher_b
WHERE (((voucher_b.period_vat)="00/00"));

224
ปกติผมจะใช้การแสดงบนฟอร์มครับ
โดยใช้เงื่อนไขการแสดงข้อมูลจากการเช็คเงื่อนไขต่างๆ
วิธีทำ ตามลิ้งนี้
https://www.thai-access.com/index.php?topic=1374.msg6015#msg6015

ส่วนตัวอย่าง ถ้าท่านอยากแสดงบนฟอร์ม เดี่ยวผมทำตัวอย่างให้

225
หรือจะใช้ คิวรี่ Update แบบนี้ก็ได้เหมือนกัน

Dim SQL As String
SQL = "UPDATE Table2 SET Table2.Type_Job = [forms]![FORM1]![Type_Job] " _
& "WHERE (((Table2.ID)=[Forms]![FORM1]![ID]));"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
DoCmd.SetWarnings True
Forms![FORM1].[ฟอร์มย่อย Table2].Requery

226
 ID datatype เป็นอะไรครับ
ถ้าเป็นข้อความเพิ่ม ' ด้วย

เช่น
 rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT*FROM Table2 WHERE Table2.ID = '" & Forms![Form1]![ID] & "'")

227
ลองปรับ criteria เป็น
LIKE Nz([Forms]![ReportMA]![txtTruck],"*")



228
TruckNo คือเลขทะเบียนรถใช้ใหมครับ ?
Criteria ให้อยู่ในบรรทัดเดียวกันได้เลย
ไม่ต้องมี Like ครับ

จากตัวอย่างของคุณ เอา Between.... ขึ้นมาอีก 1 บรรทัดครับ แล้วดูผลใหม่

ถ้าไม่ได้ขอดูคำสั่ง Forms!...... ตรงส่วนของ Criteria หน่อย

229
ถ้าตารางของซัพฟอร์ม ชื่อ table2
ปรับปรุงทุกระเบียนที่มีในตารางโค้ดจะเป็น

Private Sub txtTypeJob_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Table2")
   rs.MoveFirst
   Do Until rs.EOF
   rs.Edit
   rs![Type_Job] = Me.txtTypeJob
   rs.Update
   rs.MoveNext
 Loop
rs.Close
Set rs = Nothing
Forms![frmMain].[SubFrm].Requery
End Sub


ถ้ามีการปรับปรุงข้อมูล โดยแยกตาม ID ก็ใส่แบบนี้
Private Sub txtTypeJob_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Table2 WHERE Table2.ID = " & [Forms]![frmMain]![txtID] & "")
   rs.MoveFirst
   Do Until rs.EOF
   rs.Edit
   rs![Type_Job] = Me.txtTypeJob
   rs.Update
   rs.MoveNext
 Loop
rs.Close
Set rs = Nothing
Forms![frmMain].[SubFrm].Requery
End Sub

230
มาเจอปัญหาหลังจากใช้โค้ดครับ คือ โปรแกรมสามารถเปิดใช้งานได้เครื่องเดียวครับ ไม่สามารถเปิดมากกว่า 1 ได้ครับ
ไม่น่าจะเกี่ยวกันครับ

ขอดูโค้ดทั้งหมด ของชุดคำสั่งนั้นหน่อย

231
แก้ โค้ดปุ่มค้นหาเป็นแบบนี้ครับ

โค๊ด: [Select]
Private Sub Command14_Click()
If IsNull(txt_FirstName) And IsNull(txt_NickName) Then
MsgBox "กรุณาระบุ ชื่อพนักงาน หรือ ชื่อเล่น ก่อนค้นหา’", vbOKOnly, "Warning !!"
txt_EmpID2.SetFocus

ElseIf Not IsNull(txt_FirstName) And IsNull(txt_NickName) Then
Me.Filter = "(((FirstName) Like '*" & txt_FirstName & "*'))"
Me.FilterOn = True


ElseIf IsNull(txt_FirstName) And Not IsNull(txt_NickName) Then
Me.Filter = "(((NickName) Like '*" & txt_NickName & "*'))"
Me.FilterOn = True

End If
If IsNull(txt_EmpID2) Then
MsgBox "ไม่พบข้อมูล !!", vbOKOnly, "Warning !!"
Me.FilterOn = False
End If
Me.Refresh
End Sub

232
ห้อง MS Access / : Invalid procedure call or argument
« เมื่อ: 10 ก.พ. 64 , 15:07:18 »
 Dim NotpadDoc
 Dim oShell

ลองแก้เป็น
 Dim NotpadDoc As Object
 Dim oShell As Object


233
วิธีทำ
1.กำหนดแหล่งข้อมูลแถวของ Combobox TruckNO เป็น
โค๊ด: [Select]
SELECT tblTruck.TruckNO, tblTruck.TruckBrand, tblTruck.DriverName
FROM tblTruck
WHERE ((Not (tblTruck.TruckNO) Is Null));
1.1 กำหนด BoundColumn(หรือ คอลั่มที่ผู้ไว้ เท่ากับ 1)
1.2 กำหนดจำนวนคอลัมน์ 3
1.3 กำหนดความกว้างคอลัมน์ 5ซม.;0ซม.;0ซม.

2.กำหนดแหล่งข้อมูลแถวของ Combobox TruckBrand เป็น
โค๊ด: [Select]
SELECT [tblTruck].TruckBrand FROM tblTruck GROUP BY [tblTruck].TruckBrand HAVING ((Not ([tblTruck].TruckBrand) Is Null)); 2.1 กำหนด BoundColumn(หรือ คอลั่มที่ผู้ไว้ เท่ากับ 1)
2.2 กำหนดจำนวนคอลัมน์ 1
2.3 กำหนดความกว้างคอลัมน์ 5ซม.

3.กำหนดแหล่งข้อมูลแถวของ Combobox DriverName เป็น
โค๊ด: [Select]
SELECT [tblTruck].DriverName FROM tblTruck GROUP BY [tblTruck].DriverName HAVING ((Not ([tblTruck].DriverName) Is Null)); 3.1 กำหนด BoundColumn(หรือ คอลั่มที่ผู้ไว้ เท่ากับ 1)
3.2 กำหนดจำนวนคอลัมน์ 1
3.3 กำหนดความกว้างคอลัมน์ 5ซม.


4.เขียนโค้ด Event เมื่ออัพเดท ของcombobox TruckNO เป็น
โค๊ด: [Select]
Private Sub TruckNO_AfterUpdate()
If Not IsNull(Me.TruckNO) Then
Me.TruckBrand = Me.TruckNO.Column(1)
Me.DriverName = Me.TruckNO.Column(2)
Else
Me.TruckBrand = Null
Me.DriverName = Null
End If
End Sub

234
สร้างตัวแปรขึ้นมา 1 ตัวไว้บนสุดของคำสั่งบันทึก
เช่น dim strTAG as string
strTAG = me.tagIMM
.....โค้ดต่างๆที่มี......เช่น
Docmd.save
Docmd.gotorecord,,acnewrec
และจบท้ายคำสั่งด้วย
Me.tagIMM = strTAG


วิธีนี้เป็นการสร้างตัวแปรมาเก็บข้อมูลจาก text box ที่เราต้องการไว้ชั่วคราวและก็หลังจากนั้นก็เรียกกลับมาแสดงอีกครั้งได้ครับ เราแค่ลำดับเหตุการณ์การทำงานของคำสั่งที่เราเขียนไว้แค่นั้นเอง


หน้า: 1 ... 10 11 12 [13] 14 15 16 ... 46