แสดงกระทู้

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 7 ... 50
49
นำไปใช้เครื่องอื่นๆ ก่อนใช้งานเปิดการตั้งค่า trust center ทุกครั้ง ลองดูกระทู้นี้
https://www.thai-access.com/index.php?topic=1024.msg4510#msg4510

50
ลองเพิ่มตรงสีแดงเข้าไปว่าได้ไหม
  Set xlapp = CreateObject("excel.application")
  With xlApp
        .Visible = True
        .DisplayFullScreen = True
        .Workbooks.Add
        .Sheets("Sheet1").Select
        .ActiveSheet.Range("A2").CopyFromRecordset rsClone

51
https://www.thai-access.com/tiupld/view.php?id=qxlssh-c273a7
ผมลงรูปไม่เป็น ขอโทษด้วยครับ เลยเอาลิ้งฝากรูปมาแทน
ใช้ Event Form_Load นะครับ มี 2 แบบคือ

1.ถ้าอยากให้เปิดแล้วไป record ท้ายสุดที่เคยลงไว้ก็ใส่
Private Sub Form_Load()
docmd.GoToRecord,,acLast
End Sub

2.ถ้าอยากให้เปิดมาแล้วให้พร้อมกรอกข้อมูลใหม่เลยก็ใส่
Private Sub Form_Load()
DoCmd.GoToRecord , , acNewRec
End Sub

หรือท่านจะสร้างปุ่มไว้ด้วยกรณีกรอกข้อมูลเสร็จแล้วก็กดปุ่มเพื่อไปกรอกหน้าใหม่เลยเช่น

Private Sub btnAdd_Click()
DoCmd.Save
DoCmd.GoToRecord , , acNewRec
End Sub

52
ลองดูกระทู้นี้ครับ

แนะนำให้มี ตาราง User และมีฟิลล์ UserLevel เพื่อใช้ในการกำหนดสิทธิ์การเข้าถึงหรือการมองเห็น
และทำฟอร์มแยกออกมา ตามสิทธิ์ที่สามารถใช้ได้ดีกว่าครับ
โดยจากโค้ดด้านล่างให้ใช้การ selete Case หรือใช้ IF เข้ามาเช็คเงื่อนไขเช่น
IF Flevel = 1 then
docmd.OpenForm "admin"
elseif Flevel = 2 then
Docmd.openform "User"
End if

ส่วนโค้ดไปศึกษาจากลิ้งด้านล่างได้เลย

https://www.thai-access.com/index.php?topic=117.msg318#msg318

54
คำสั่ง มันดัดแปลงได้หลายๆแนวมากแล้วแต่การบันทึกว่าจะทำแบบไหน
ถ้าแบบเบื้องต้น ใช้ Current ในการเช็ค และไปสร้างเงื่อนไขเช็คจาก .Caption เช่น

สร้าง Sub ขึ้นมาใส่
โค๊ด: [Select]
Private Sub CheckRecord()
If NewRecord Then
Me.btnAdd.Caption = "บันทึก"
Else
Me.btnAdd.Caption = "เพิ่ม"
End If
End Sub

ที่ Event Form_Current() ใส่โค้ด
โค๊ด: [Select]
Private Sub Form_Current()
CheckRecord
End Sub

ต่อมาสร้างเงื่อนไขให้กับปุ่มเพิ่ม/บันทึก
โค๊ด: [Select]
Private Sub btnAdd_Click()
If IsNull(Me.ID) Then 'เช็คเงื่อนไขบนฟอร์มว่า ID ไม่เป็นค่าว่างป้องกันกรณีที่ยังไม่ได้เพิ่มข้อมูลแล้วกดบันทึก
MsgBox "กรุณาระบุข้อมูล", vbCritical, "Status!!"
Else
If Me.btnAdd.Caption = "บันทึก" Then
DoCmd.RunCommand acCmdSave
Me.btnAdd.Caption = "เพิ่ม"
ElseIf Me.btnAdd.Caption = "เพิ่ม" Then
DoCmd.GoToRecord , , acNewRec
End If
End If
End Sub

ลองไปดัดแปลงใช้งานดูครับ

56
ผมว่าเงื่อนไขต้องนี้น่าจะมาจากเงื่อนไขตอนแรกมากกว่า
เช่น การกำหนดให้มีการ Dcount มาแสดงใหม่เป็นต้น

ถ้า textbox ใดๆ ที่ผลลัพธ์ มาจากการคำนวน จะใช้ .recalc
ถ้าเป็นคอนโทรลที่มีข้อมูล Bound เช่น  ตารางหรือ Query , ฟอร์มย่อย , วัตถุ OLE เช่น แผนภูมิ , combobox , listbox , ตัวควบคุมที่มีฟังก์ชันการรวม เช่นDSum  ใช้ .Requery ได้



57
ห้อง MS Access / : สอบถามโค้ด SQL ครับ
« เมื่อ: 06 ส.ค. 64 , 14:13:40 »
WHERE (((PI.[Position]) NOT LIKE "ผช.ช่าง" And (PI.[Position]) Not Like "สัญญาจ้าง"));

แล้วถ้าเราอยากนับว่าใน Table นี้ Query นี้มี Record อยู่กี่ Row ใส่ลงใน form ต้องเขียน VBA ยังไงหรอครับ หรือว่าลง Query ได้อย่างเดียวครับ

ทำได้หลายแบบ
ถ้าแบบง่ายก็ใช้ การแสดงผลใน textbox
Dim RecCount as long
RecCount = DCount("*", "[ชื่อตารางหรือคิวรี่]")
Me.txtRecCount = RecCount

ถ้าอยากแสดงบน Label ใช้
Me.LabelRecCount.Caption = RecCount

58
ห้อง MS Access / : สอบถามโค้ด SQL ครับ
« เมื่อ: 06 ส.ค. 64 , 14:01:25 »
WHERE (((PI.[Position]) NOT LIKE "ผช.ช่าง" And (PI.[Position]) Not Like "สัญญาจ้าง"));

ปกติใช้
WHERE (((PI.[Position]) NOT "ผช.ช่าง" And (PI.[Position]) Not  "สัญญาจ้าง"));

Not Like จะใช้ในกรณ๊ที่ต้องการประโยคบางส่วนของข้อมูลก็เข้าเงื่อนไขโดยใช้ *  เช่น
มีข้อมูล กขค
          กขจ
          ครง
          จกข
WHERE (((PI.[Position]) NOT "*ก"));

ข้อมูล กขค กับ กขจ จะไม่แสดง เป็นต้น

59
เปลี่ยนจาก Count เป็น Sum ธรรมดาได้เลยเช่น
ถ้าคุณมีข้อมูลใน Field แยกประเภท ข้อมูล จะมี สัญญาจ้าง และ พนักงานประจำ

เช่น
[แยกประเภท]
สัญญาจ้าง
สัญญาจ้าง
พนักงานประจำ
สัญญาจ้าง
พนักงานประจำ
สัญญาจ้าง

SQL คือ

SELECT Sum(IIf([แยกประเภท]="สัญญาจ้าง",1,0)) AS สัญญาจ้าง, Sum(IIf([แยกประเภท]="พนักงานประจำ",1,0)) AS พนักงานประจำ
FROM [ชื่อตารางหรือคิวรี่];


ข้อมูลจะได้
สัญญาจ้าง lพนักงานประจำ
      4     l       2


กรณีที่ Field แยกประเภท จะระบุเฉพาะคนที่มีสัญญาจ้างเท่านั้น พนักงานประจำไม่ได้ระบุหรือเว้นว่างๆ ไว้แต่อยากให้คำนวนด้วย
เราก็แก้เงื่อนไข True False ให้ False = 1 ก็ได้แล้วครับเช่น

SELECT Sum(IIf([แยกประเภท]="สัญญาจ้าง",1,0)) AS สัญญาจ้าง, Sum(IIf([แยกประเภท]="สัญญาจ้าง",0,1)) AS พนักงานประจำ
FROM [ชื่อตารางหรือคิวรี่];

60
เสริมเพิ่มเติม
บางครั้งแปลงไฟล์ เป็น ACCDE หรือ MDE
เพื่อป้องกันการแก้ไขหรือลบโค้ด Module  สามารถใช้งานรันได้ แต่ไม่สามารถเปลี่ยนแปลงได้
เพื่อที่ป้องกันผู้ใช้จากการเข้าถึงฐานข้อมูลแบบเต็มครับ

แต่เมื่อแปลงเป็น เป็น ACCDE หรือ MDE แล้ว ถ้า Admin ผู้พัฒนาจะแก้ไขโค้ดต่างๆ ต้องทำจากตัว ACCDB หรือ MDB เท่านั้นแล้วแปลงใหม่
จะไม่สามารถแก้ไขโค้ดจาก ACCDE ได้เช่นกัน

61
สามารถดึงตารางที่มี Field เพศ หรือ Field กรุ๊ปเลือด มานับจำนวนโดยสร้างคิวรี่ใหม่ขึ้นมาแล้ว ใส่ sql แบบนี้

SELECT [เพศ], Count([เพศ]) AS จำนวน FROM [ชื่อตารางหรือคิวรี่]  GROUP BY [เพศ];

และถ้าจะนับจำนวน กรุ๊ปเลือด ทำแบบเดียวกัน

SELECT [กรุ๊ปเลือด], Count([กรุ๊ปเลือด]) AS จำนวน FROM [ชื่อตารางหรือคิวรี่]  GROUP BY [กรุ๊ปเลือด];

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

63
ตอบ ข้อความผมด้วยครับ ผมส่ง ID LINE ไปให้แล้ว


64
ส่ง รหัส anydesk มาทางข้อความหน่อยครับ
ผมรีโมทไปแก้ให้

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