แสดงกระทู้

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 ... 32
19
เป็นมือใหม่ค่ะ หาไม่เจอเลยค่ะ ตามที่สอน เป็นภาษาไทยด้วยค่ะ รบกวนชี้แนะ เพิ่มได้มั้ยคะ
ทำได้ 2 แบบด้วยกัน

1.ตรง textbox เลขที่บิลในรายงานในส่วนรายละเอียด
กดคลิ๊กขวาเลือก เรียงลำดับจากน้อยไปหามากครับ




2.วิธีกำหนด Record Source ของ Report เป็น Query แล้วสั่ง Sort แบบ Ascending ที่ฟิลด์ "เลขที่บิล" ที่อาจารย์บอกมาก็สามารถทำดังนี้



โพสต์นี้ได้รับคำขอบคุณจาก: oraaoi, I love movies

20
ขอบคุณค่ะอาจารย์
ก่อนหน้านี้หนูได้ทดลองใช้วิธีลักไก่หลอกโปรแกรมโดยสร้างฟิลด์ใหม่ [Notจังหวัด] ที่คิวรี่ขึ้นมาอีกหนึ่งฟิลด์ค่ะ
แล้วแยกใส่คำสั่งทั้งสองลงไป สามารถตอบโจทย์ที่ต้องการได้แล้วค่ะอาจารย์



สุดยอด สาย DIY อีกคนเปล่าครับนี้  :shout:
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

21
ถ้าเป็น [Forms]![frmค้นหา]![text1] or Not [Forms]![frmค้นหา]![text2]
จะสามารถทำได้ แต่ถ้ามี Like ด้วยผมไม่เคยทำครับ
โดยปกติจะสร้างเงื่อนไข โดยใช้ IF check เช่น

IF ISnull(text1) and Not isnull(Text2) then
            กำหนด sql ของ Like "*" & [Forms]![frmค้นหา]![text1] & "*"

elseIF  ISnull(text2) and Not isnull(Text1) then
            กำหนด sql ของ Not [Forms]![frmค้นหา]![text2]
end if
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

22
ขออนุญาตเพิ่มเติมค่ะ
เบื้องต้นลองตั้งค่าตัวเลือกของ Access ดูก่่อนนะคะว่าได้ไหม ตามในรูปค่ะ


1.เปิด active x ก็พอครับ
2.ส่วนการเปิด macro ทั้งหมดนั้นตอนนี้ไม่แนะนำแล้วครับ เพราะมีอันตรายต่อโปรแกรมฐานข้อมูลได้ครับ
   ตรงส่วนของ Macro จะมีแจ้งเตือนให้กดเป็นแถบสีเหลืองสามารถกดยืนยันตรงนั้นได้เลย
   
โพสต์นี้ได้รับคำขอบคุณจาก: I love movies

23
สมมติว่าเรามีรายชื่อลูกค้ากระจายอยู่ในหลายจังหวัด ทีนี้หนูอยากจะให้ค้นหาโดยละเว้นเฉพาะจังหวัดที่เราระบุใน textbox บนหน้าฟอร์มแล้วสั่งไปที่คิวรี่ให้แสดงข้อมูลทุกจังหวัด ยกเว้นจังหวัดที่เราระบุค่ะ
เช่นระบุว่า กรุงเทพฯ ก็ให้ละเว้นเฉพาะกรุงเทพฯอย่างเดียว นอกนั้นแสดงจังหวัดอื่นขึ้นมาทั้งหมดเลยค่ะ

ในคิวรี่ ที่ฟิลล์ของจังหวัด เราสามารถใส่ Criteria
Not Forms![ชื่อฟอร์ม]![ชื่อtextboxบนฟอร์ม]
เท่านี้ ข้อมูลที่จะนำมาแสดง ก็จะไม่มีจังหวัดนั้นแล้วครับ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

24
กำหนดให้เป็นเส้นประแบบไหนครับ

ปกติสามารถกำหนดแบบของเส้นได้โดยไปที่ Tab รูปแบบ >> เส้นกรอบรูปร่าง >> ชนิดเส้น ได้เลย
โพสต์นี้ได้รับคำขอบคุณจาก: I love movies

25
ตอนนี้ ข้อความอยู่ใน ส่วนท้ายของหน้า
ให้ลองเอาไปไว้       ส่วนท้ายของรายงาน    ดูนะครับว่าได้ไหม

ถ้ายังไม่ได้กำหนดให้แสดงส่วนท้ายก็กดคลิ๊กขวา แล้วเลือกส่วนหัวและท้ายรายงานด้วย

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

26


เปิด form มาต้องมานั่ง Sort ใหม่ตลอดเลยครับ ใน Query ก็ Sort แล้ว ใน Subform ที่เป็นไฟล์แยกก็ Sort แล้ว

ที่ Recordsource ของฟอร์ม กดเข้าไปกำหนดที่เครื่องหมาย ... และตั้งค่าให้ฟอร์ม เหมือนต้องค่าคิวรี่นั้นแหละ
แล้วกำหนด sort ไว้ก่อนได้เลยครับ

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

27
ต้องการ Requery ใน ComboBox ทุกครั้งที่เปลี่ยน Records ต้องใส่ใน Event ตัวไหนใน Form ครับ

ท่านกดเปลี่ยน Record ตรงไหน ก็ใส่โค้ดตรงนั้นได้เลยครับ

ถ้าท่านสร้างปุ่มสำหรับเปลี่ยน Record ขึ้นมาก็ใช้แบบนี้ได้เลย
สมมุติปุ่มชื่อ BtnNext
โค๊ด: [Select]
Private Sub Btn_Next_Click()
DoCmd.GoToRecord , , acNext
Me.ComboboxName.Requery
End Sub

สามารถ ใช้ได้หลายแบบนะครับ ลองนำไปปรับใช้ดูครับ

DoCmd.GoToRecord , , acNewRec  ไปยัง Record ใหม่
DoCmd.GoToRecord , ,acFirst ไปยัง Record แรก
DoCmd.GoToRecord , , acLast ไปยัง Record สุดท้าย
DoCmd.GoToRecord , , acNext ไปยัง Record ถัดไป
DoCmd.GoToRecord , ,acPrevious ไปยัง Record ก่อนหน้า





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

28
ลองปรับโค๊ดเป็นแบบนี้แล้วทดสอบดูนะครับ

โค๊ด: [Select]
Dim strNum, strBarCode As String
Dim I, amount   As Long
Dim db As Database
Dim rs As Recordset
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("table1", DB_OPEN_DYNASET)
    For I = Me.txtBeginNumber To Me.txtEndNumber
     strNum = Right("0000" & I, 4)
     strBarCode = Trim(Me.txtModel) & Trim(Me.Text15) & Trim(strNum) & "R2"
    If DCount("Barcode", "table1", "[Barcode] ='" & strBarCode & "'") > 0 Then
        MsgBox "มีการลงทะเบียน Barcode นี้แล้ว", vbInformation, "Status"
        Exit Sub
    End If
    If Nz(amount, 0) = 0 Then
    amount = DCount("Barcode", "table1", "[Barcode] ='" & strBarCode & "'")
    Else
    amount = amount + DCount("Barcode", "table1", "[Barcode] ='" & strBarCode & "'")
    End If
 Next I

  'เช็คเงื่อนไขการซ้ำให้เสร็จ แล้วตามด้วย ถ้าไม่มีข้อมูลซ้ำ amount = 0 ก็ทำการบันทึก
 If amount = 0 Then
    For I = Me.txtBeginNumber To Me.txtEndNumber
    strNum = Right("0000" & I, 4)

     rs.AddNew
        rs![Barcode] = Trim(Me.txtModel) & Trim(Me.Text15) & Trim(strNum) & "R2"
       
     rs.Update
     Next
     MsgBox "บันทึกสำเร็จ", vbInformation, "การบันทึก"
rs.Close
db.Close
Set rs = Nothing: Set db = Nothing
End If
โพสต์นี้ได้รับคำขอบคุณจาก: ชวลิต เสนะสุทธิ

29
ผมสมมุติ Formหลักชื่อ FrmMain
           SubForm ทางซ้ายชื่อ SubForm1
           SubForm ทางขวาชื่อ Subform2
           Table ของข้อมูลทางซ้าย ชื่อ EM มีฟิลล์ [รหัสพนักงาน] , [F3]
           Table ของข้อมูลทางขวา ชื่อ NEWEM  มีฟิลล์ [CODEEM] , [EM]
วิธีทำ
1.สร้างคิวรี่ขึ้นมา ใช้ Append Query ใส่ SQL และตั้งชื่อคิวรี่ตามต้องการเช่น QueryAppendToNewEm

INSERT INTO NEWEM ( CODEEM, EM )
SELECT EM.[รหัสพนักงาน], EM.F3
FROM EM
WHERE EM.[รหัสพนักงาน]=[forms]![FrmMain]![SubForm1].[Form]![รหัสพนักงาน];

2.ที่ปุ่มใส่โค้ดไปว่า

DoCmd.SetWarnings False
DoCmd.OpenQuery "QueryAppendToNewEm"
DoCmd.SetWarnings True
[Forms]![FrmMain]![Subform2].[Form].Requery
โพสต์นี้ได้รับคำขอบคุณจาก: AC.Ignorant, Pongsak

30


ตรง Date ผมใช้ Date() และ Time ใช้ Time() ปรากฏว่าเวลาเพิ่ม Row ไปใหม่ มันจะให้ทุก Row เป็นเวลาตอนนี้เลย
ถ้าอยากให้มันเป็นวัน,เวลา บอกเฉพาะ Row ไปว่าเพิ่มมาวันไหนเวลาไหน ไม่ทราบว่าต้องทำอย่างไรครับ
วิธีทำต้องมีฟิลล์ในตาราง เช่น TimeStamp ชนิดข้อมูล date/time
และมีเมื่อการอัพเดทข้อมูล ในฟอร์มกำหนดให้อัพเดทฟิลล์ timestamp  = NOW()  มันจะได้ทั้งวันที่และเวลา มาเลยครับ
เราจะได้ไม่ต้องสร้าง 2 ฟิลล์

หมายเหตุถ้าเมื่อมีการเพิ่มฟิลล์ใหม่กำหนดให้บันทึกเวลาด้วย
ให้กำหนด default Value ของฟิลล์นี้ในตาราง = Now() ไว้ได้เลย
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit, Pongsak

31
ตรงแก้ไขชื่อฟิวล์ ทำก่อนเลยในคิวรี่แบบที่คุณ UnKnown บอกครับ เนื่องจากเครื่องคุณไม่ได้ตั้งค่าให้รองรับภาษาไทย


แถมวิธีที่แสดงในคิวรี่เฉยๆ ชื่อที่แสดง: [ชื่อฟิลด์] เช่น ไอดี:[ID] , เลขบัตร:[ID_Card] , รหัส:[Code ]
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

32
ไปที่ VBA Editor ไปที่ TOOL > References
ไปกดติ๊กเลือก Microsoft Excel xx.x Object Library  มาด้วยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: 001Jetnipit

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

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