แสดงกระทู้

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 - 001Jetnipit

หน้า: 1 2 [3] 4 5
33
ใช้วิธีการเดี่ยวกับการกำหนดจัดกึ่งกลางนะครับ แต่เพิ่มโค๊ดเข้าไปอีกนิดเช่น

    Dim objExcelApp As Excel.Application
    Dim wb As Excel.Workbook
    Dim sht As Object
    Dim sFilename  As String
   
    sFilename = "E:\ExportedResults1.xls"
    DoCmd.OutputTo acOutputQuery, "ชื่อตาราง", acFormatXLS, sFilename
   
Set objExcelApp = Excel.Application
Set wb = objExcelApp.Workbooks.Open(sFilename)
Set sht = wb.Worksheets(1)
objExcelApp.Visible = True
sht.Columns("A:W").HorizontalAlignment = xlCenter
sht.Columns("A:W").EntireColumn.AutoFit
sht.Range("A1").Value = "ไอดี"    'A1,B1,C1 คือหัวของคอลัมน์
sht.Range("B1").Value = "ชื่อ"
sht.Range("C1").Value = "สกุล"


wb.Save
wb.Close
objExcelApp.Quit
Set objExcelApp = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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

Private Sub export_Click()
    Dim objExcelApp As Excel.Application
    Dim wb As Excel.Workbook
    Dim sht As Object
    Dim sFilename  As String
   
    sFilename = "E:\ExportedResults1.xls"  'เลือกตำแหน่งของไฟล์ที่ต้องการ Export และ เปิดมาแก้ไข
    DoCmd.OutputTo acOutputQuery, "ชื่อคิวรี่", acFormatXLS, sFilename  'โค้ดสั่ง Export ตามโค๊ดเดิมของท่านได้เลย
   
Set objExcelApp = Excel.Application
Set wb = objExcelApp.Workbooks.Open(sFilename)
Set sht = wb.Worksheets(1)
objExcelApp.Visible = True
sht.Columns("A:W").HorizontalAlignment = xlCenter   'กำหนดให้ column A ถึง W ของ Sheet จัดกึ่งกลาง จะเอาถึงคอลั่มน์ไหนก็กำหนดเอาได้เลย
sht.Columns("A:W").EntireColumn.AutoFit 'กำหนดให้คอลัมน์พอดีกับข้อมูล
wb.Save  'สั่งบันทึก
wb.Close  'สั่งปิดไฟล์
objExcelApp.Quit 'สั่งจบการทำงาน
Set objExcelApp = Nothing
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

35
ต้องดูว่า MS Office ใช้กี่ Bit

ครับ ถ้า 32bit ไม่น่าจะมีปัญหาอะไร
แต่ถ้า 64 bit ต้องมีคำว่า prtSafe ด้วย เช่น

Private declare prtsafe function ...........................

แดงแบบเดิมเลยครับ





ผม 64 บิทครับ
Copy codeมาหน่อยครับ
เอาเป็นตัวอักษรไม่เอาเป็นรูปนะครับ
ผมจะได้ copy มาแก้ให้ได้
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

36
ห้อง MS Access / : Login กด Enter ทีเดียว
« เมื่อ: 18 ส.ค. 64 , 12:03:19 »
ปรับโค๊ดเป็นแบบนี้นะครับ

เอาโค้ดในการล๊อกอินไปไว้ใน Event On Enter ของปุ่มเช่น

โค๊ด: [Select]
Private Sub Command4_Enter()
Dim fpass As String, fusername As String
If IsNull(Me.UserBox) Then
MsgBox "กรุณาระบุ UserName", vbInformation, "ข้อผิดพลาด"
Exit Sub
ElseIf IsNull(Me.PassBox) Then
MsgBox "กรุณาระบุ Password", vbInformation, "ข้อผิดพลาด"
Else
fusername = Nz(DLookup("[UserName]", "UserV", "[UserName]='" & Me.UserBox & "'"))
If fusername = "" Then
    MsgBox "ชื่อผู้ใช้ไม่ถูกต้อง", vbCritical, "ไม่พบชื่อผู้ใช้งาน"
Else
        fpass = Nz(DLookup("[Password]", "UserV", "[UserName]='" & Me.UserBox & "'"))
       If fpass = Me.PassBox Then
            DoCmd.Close acForm, Me.name
            DoCmd.OpenForm "PIScreen_vaccine"
          Else
                    MsgBox "รหัสผ่านไม่ถูกต้อง", vbCritical, "พบข้อผิดพลาด"
    End If
    End If
    End If
End Sub

ส่วนของการเรียกใช้ ให้ใส่ไว้ใน Event OnClick หรือ AfterUpdate ของ คอนโทรล เช่น

โค๊ด: [Select]
Private Sub PassBox_AfterUpdate()
Command4_Enter
End Sub

โค๊ด: [Select]
Private Sub BtnLogIn_Click()
Command4_Enter
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

37
ห้อง MS Access / : Login กด Enter ทีเดียว
« เมื่อ: 18 ส.ค. 64 , 11:49:32 »
ที่ปุ่ม ใส่โค้ดใน Event On_Enter ได้เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

38
ห้อง MS Access / : สอบถามโค้ดไม่ตก Else
« เมื่อ: 17 ส.ค. 64 , 10:33:35 »
จากโค๊ดด้านบน

ถ้าใส่ User ถูก และถ้ารหัสผ่านผิดน่าจะขึ้นแจ้งเตือนได้ครับ
แต่ถ้าใส่ User ผิด การแจ้งเตือนจะไม่แสดง
ลองปรับโค๊ดเป็นแบบนี้

โค๊ด: [Select]
Dim fpass As String, fusername As String
If IsNull(Me.Userbox) Then
MsgBox "กรุณาระบุ UserName", vbInformation, "ข้อผิดพลาด"
Exit Sub
ElseIf IsNull(Me.PassBox) Then
MsgBox "กรุณาระบุ Password", vbInformation, "ข้อผิดพลาด"
Else
fusername = Nz(DLookup("[UserName]", "UserV", "[UserName]='" & Me.Userbox & "'"))
If fusername = "" Then
    MsgBox "ชื่อผู้ใช้ไม่ถูกต้อง", vbCritical, "ไม่พบชื่อผู้ใช้งาน"   
Else
        fpass = Nz(DLookup("[Password]", "UserV", "[UserName]='" & Me.Userbox & "'"))
       If fpass = Me.PassBox Then
         
          DoCmd.OpenForm "PIScreen_vaccine", acNormal, "", "", , acNormal
       Else
          MsgBox "รหัสผ่านไม่ถูกต้อง", vbCritical, "พบข้อผิดพลาด"         
    End If
    End If
    End If
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

39
คิวรี่แสดงสีไม่ได้

แต่ใช้การเช็คค่าจากคิวรี่ไปแสดงลองดูตัวอย่าง
https://www.thai-access.com/index.php?topic=438.msg1952#msg1952
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

40
อ้างอิง ฟอร์มหลัก ก่อนจะ อ้างอิงซัพฟอร์มครับ
อาจจะใช้   Me.PTT1.Form.TextIDCard
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

41
กดไปที่มุมมองออกแบบ ตรงด้านล่างจะมีให้จัดเรียงลำดับ กดเลือก ไม่เรียงลำดับ แล้วกดบันทึก มันจะหายไปเอง
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

42
นำไปใช้เครื่องอื่นๆ ก่อนใช้งานเปิดการตั้งค่า trust center ทุกครั้ง ลองดูกระทู้นี้
https://www.thai-access.com/index.php?topic=1024.msg4510#msg4510
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

43
ลองเพิ่มตรงสีแดงเข้าไปว่าได้ไหม
  Set xlapp = CreateObject("excel.application")
  With xlApp
        .Visible = True
        .DisplayFullScreen = True
        .Workbooks.Add
        .Sheets("Sheet1").Select
        .ActiveSheet.Range("A2").CopyFromRecordset rsClone
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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

แนะนำให้มี ตาราง 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
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

45
ลองดูโพสนี้ครับ
https://www.thai-access.com/index.php?topic=331.msg1345#msg1345
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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

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


โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

47
ห้อง 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
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

48
ห้อง 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 "*ก"));

ข้อมูล กขค กับ กขจ จะไม่แสดง เป็นต้น
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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