แสดงกระทู้

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 - ปิ่นณรงค์

หน้า: 1 2 [3] 4 5 6 ... 21
37
ฟอร์มน่าจะต้องสร้างเป็นแบบ continuous Form นะครับ และ Control ทุกตัวจะ สร้างแบบ unbound  ก็ได้ หรือ bound กับตารางชั่วคราว แล้วค่อย Append ไปยังตารางหลัก

1.เวลาแสกนได้ แถวแรกมาแล้ว ก็สั่งให้ docmd.GoToRecord,,acNewRec และสั่งให้ Curser Setfocus ที่ LNB ของเรคคอร์ดอันใหม่นั้นเพื่อรับการแสกนครั้งต่อไป
2.พอใส่ข้อมูลตามหมายเลข 2 3 4 เสร็จแล้ว ก็ใช้ Append Query ข้อมูลทั้งหมดนี้้ไปไว้ในตารางหลักครับ และ เคลียข้อมูลในตารางชั่วคราวเพื่อรับข้อมูลใหม่
โพสต์นี้ได้รับคำขอบคุณจาก: phatthawat

38
ห้อง MS Access / : กำหนดช่วงวันที่
« เมื่อ: 22 พ.ค. 62 , 16:04:28 »

ลองดูนะครับ ไม่รู้ใช่ที่ต้องการหรือเปล่า
แนวคิดคือ
1.ถ้าเกินวันที่ 10 ก็ให้ เดือน +1
2.ถ้าเป็น เดือน 12 และ วันที่ >10 ให้ เดือนเท่ากับ 1 และ ปี+1


แบบที่ 1 แบบแสดงเดือนเป็นตัวเลข และเดือนแบบตัวอักษร
โค๊ด: [Select]
Private Sub txtDate_AfterUpdate()
Dim sMonth As String
Dim sDate As String
Dim result As String

sMonth = Month(Me.txtDate)
sDate = Day(Me.txtDate)
sYear = Format(txtDate, "yyyy")

If sDate <= 10 Then
result = Me.txtDate
Else
result = sDate & "/" & sMonth + 1 & "/" & sYear
If (Mid(result, 4, 2)) = "13" Then

result = sDate & "/" & "1" & "/" & (Format(txtDate, "yyyy") + 1)
Else
result = result
End If
End If
result = result
Me.txtMonth = "เดือน" & Month(result) & " " & MonthName(Month(result))
End Sub

แบบที่ 2 แสดงเดือนและปีแบบเต็ม
โค๊ด: [Select]
Private Sub txtDate_AfterUpdate()
Dim sMonth As String
Dim sDate As String
Dim result As String

sMonth = Month(Me.txtDate)
sDate = Day(Me.txtDate)
sYear = Format(txtDate, "yyyy")

If sDate <= 10 Then
result = Me.txtDate
Else
result = sDate & "/" & sMonth + 1 & "/" & sYear
If (Mid(result, 4, 2)) = "13" Then 'ดักเงื่อนไข กรณี เดือน 12 +1 จะเท่ากับ 13

result = sDate & "/" & "1" & "/" & (Format(txtDate, "yyyy") + 1) 'ก็ให้แปลงกลับเป็นเดือน 1 และ +ปี ไปอีก 1
Else
result = result
End If
End If
Me.txtMonth = result

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

39
ยินดีครับ ที่จริงมันสามารถ Convert File รูป เป็นรูปแบบที่ต้องการได้ด้วยนะครับ เช่น ต้นฉบับเป็น .BMP จะแปลงเป็น .JPEG หรือ อื่นๆได้ โดยใช้ WIA
แต่จากความต้องการเจ้าของกระทู้ ไม่น่าจะใช้ในส่วนนี้ครับ  :cool: :cool:
โพสต์นี้ได้รับคำขอบคุณจาก: mbbrid, aek, apirak

40
ผมได้ปรับปรุงโปรแกรมให้มีการจัดเก็บเป็นหมวดหมู่ นะครับ
ตารางมีดังนี้


Tbl_GroupNum ตารางนี้เก็บรหัสประจำกลุ่มของรูปภาพ สมมุติกลุ่ม 1 มีภาพ 1 2 3 4 5 6 ไปเรื่อยๆ ครับ
Tbl_Picture       ตารางนี้เก็บรหัสของกลุ่มไว้ และเก็บตำแหน่ง Path เดิมที่รูปภาพอยู่ และ ตำแหน่งรูปภาพใหม่ ที่เรา Copy ไปเก็บไว้โฟลเดอร์
TempPath        ตารางนี้เก็บตำแหน่ง Floder ที่ใช้ในการเก็บรูปภาพที่เราต้องการ โดยไปสร้าง Floder ไว้ให้เรียบร้อยแล้ว กำหนด Path ใน       
                      Combobox ครับ

การใช้งาน

1.เมื่อเราเปิดโปรแกรมมาโดยยังไม่ได้มีการเพิ่มข้อมูล NO จะเริ่มต้นให้เองที่เลข 1
2.กำหนด ตำแหน่งจัดเก็บไปยัง Floder ปลายทางให้เรียบร้อย
3.กด Import เลือกรูปที่ต้องการจัดเก็บ
4.กด Add เพื่อบันทึกรูปภาพไปยังตาราง และข้อมูลจะแสดงที่ ตารางด้านขวาขึ้นทันที
5.เมื่อเพิ่มรูปภาพใน Group เดิมเสร็จแล้ว ต้องการสร้าง Group ใหม่ สามารถกดที่ New Group ได้เลยครับ
6.ถ้าต้องการค้นหาหรือเรียกดู Group อื่น ก็ใส่รหัส Group ที่ textbox GOTO GROUP แล้วกด OK
7.เมื่อเลือกรูปภาพแล้วอยาก Clear Form เพื่อเอารูปภาพใหม่ กดปุ่ม Clear
8.คลิ๊กที่เลขลำดับด้านขวา จะแสดงรูปตัวอย่างของรูปภาพที่เรา Add ไปแล้ว


[info]อัพเดท ตัวใหม่ล่าสุดใช้การรันลำดับการนำเข้าด้วยครับ สะดวกต่อการตรวจสอบ[/info]
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี, apirak

41
อ้างถึง
เพิ่มนามสกุลไฟล์จาก JPG เป็นไฟล์รูปภาพอื่นต้องเพิ่มอย่างไรครับ



ถ้าจะเพิ่มการเก็บไฟล์รูปภาพประเภทอื่นๆ ด้วยลองใส่ตามนี้ครับมี 2 แบบให้เลือก
โค๊ด: [Select]
Private Sub Import_Click()
Dim File As FileDialog
Dim strPath, StrFile, SetPathon As String
If IsNull(Me.SetPath) Then
MsgBox "กรุณากำหนด Path ที่จะจัดเก็บก่อน", vbInformation, "แจ้งเตือนขั้นตอน"
Else
Set File = Application.FileDialog(msoFileDialogFilePicker)
With File
        .Title = "เลือกรูปภาพ"
        .Filters.Clear
        .Filters.Add "JPG", "*.JPG"
        .Filters.Add "BMP", "*.BMP"
        .Filters.Add "JPEG File ", "*.JPEG"
        .Filters.Add "GIF", "*.GIF"
        .Filters.Add "PNG", "*.PNG"
        .Filters.Add "TIFF", "*.TIFF"
        .Filters.Add "ALL Pictures", "*.JPG,*.BMP,*.JPEG,*.GIF,*.PNG,*.TIFF"
 End With
If File.Show Then
Me.PhotoPath = File.SelectedItems.Item(1)
End If
If Not IsNull(PhotoPath) Then
SetPathon = SetPath
strPath = Me.PhotoPath
StrFile = Right(strPath, Len(strPath) - InStrRev(strPath, "\"))
Me.SetPath = SetPathon & "\" & StrFile
End If
End If
End Sub

หรือแบบไม่ต้องกำหนด ประเภทไฟล์คือให้แสดงทุกรูปแบบนามสกุลไฟล์ที่เป็นรูปภาพตามที่เรากำหนดประมาณนี้ครับ

โค๊ด: [Select]
Private Sub Import_Click()
Dim File As FileDialog
Dim strPath, StrFile, SetPathon As String
If IsNull(Me.SetPath) Then
MsgBox "กรุณากำหนด Path ที่จะจัดเก็บก่อน", vbInformation, "แจ้งเตือนขั้นตอน"
Else
Set File = Application.FileDialog(msoFileDialogFilePicker)
With File
        .Title = "เลือกรูปภาพ"
        .Filters.Clear
        .Filters.Add "ALL Pictures", "*.JPG,*.BMP,*.JPEG,*.GIF,*.PNG,*.TIFF"
End With
If File.Show Then
Me.PhotoPath = File.SelectedItems.Item(1)
End If
If Not IsNull(PhotoPath) Then
SetPathon = SetPath
strPath = Me.PhotoPath
StrFile = Right(strPath, Len(strPath) - InStrRev(strPath, "\"))
Me.SetPath = SetPathon & "\" & StrFile
End If
End If
End Sub

ส่วนการเลือกรูปหลายรายการนั้น ต้องดูว่าท่านออกแบบตารางเก็บข้อมูลไว้แบบไหน ถึงจะแนะนำได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: aek, apirak

42
เพิ่มเติม

Safety valve ปีละ 1 ครั้ง
หม้อแปลง ปีละ 1 ครั้ง
PRESSURE RELIEF VALVE ปีละ 1 ครั้ง
Tank จะมีแยก2 คอลัมณ์
Internal 15ปี 1 ครั้ง
External ปีละ 1 ครั้ง


เหลือ เช็คทุก 6 เดือนไว้ว่างๆ จะทำตัวอย่างให้ดูครับ
Field Fix คือช่วงเดือนละปีที่ถึงวันครบรอบนะครับ
ปล แก้ระบบค้นหาตามเงื่อนไขให้ใหม่แล้วด้วยนะคับ
โพสต์นี้ได้รับคำขอบคุณจาก: MartSirawit, apirak

43
คือผมต้องการใช้ query กำหนด day time และก็ night time เพื่อแบ่งข้อมูลจะทำได้ไหมครับ

ผมสมมุติฟิลล์เก็บ เวลาชื่อ Ontime และกำหนดให้ 8 โมงเช้า ถึง 6 โมงเย็นเป็นเวลากลางวัน

ที่ Query กำหนดฟิลล์ว่า
โค๊ด: [Select]
IIf([Ontime] Between #8:00:00# And #18:00:00#,"day time","night time")
โพสต์นี้ได้รับคำขอบคุณจาก: Kanxay Vnv

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

ถ้าจะสร้างการตรวจสอบเมื่อเปิดไฟล์ขึ้นมางั้นเราจะเพิ่มโค้ดตรวจสอบไว้ที่ AutoExec นะครับ
โดย Macro และ Module นี้นำไปไว้ที่ โปรแกรมหลักของเราเลย เวลา Copy ไฟล์ Macro และ Module นี้จะติดมาด้วย

ขั้นตอนที่ 1 สร้าง Module ใส่
โค๊ด: [Select]
Public Function AutoExec_AutoExec()
On Error GoTo AutoExec_AutoExec_Err
   Dim strFileName As String
   Dim DFileName As String
   
   strFileName = CurrentProject.Path & "\" & CurrentProject.Name
    DFileName = Dir(strFileName)
   
   If Left(DFileName, 6) = "Backup" Then
   MsgBox "ไฟล์นี้เป็นไฟล์สำรองไม่ควรเปิดใช้งานจนกว่าจะเปลี่ยนชื่อไฟล์ใหม่", vbInformation, "แจ้งเตือน"
    DoCmd.Quit
   End If
AutoExec_AutoExec_Exit:
    Exit Function
   
AutoExec_AutoExec_Err:
    MsgBox Error$
    Resume AutoExec_AutoExec_Exit
   
End Function

ขั้นตอนที่ 2 สร้างมาโครขึ้นมา 1 อันใส่โค้ดนี้ไปตั้งชื่อว่า AutoExec


เท่านี้เวลาเปิดไฟล์ไหนก็แล้วแต่ที่ Copy มา ถ้าไฟล์ ชื่อขึ้นต้นด้วย BackUp ก็จะแสดง Msgbox แจ้งเตือนทันทีคับ

ผมมีตัวอย่างไฟล์ ลองกด Botton Copy แล้วไปลองเปิดไฟล์ Backup ที่ Drive D ดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: aek, apirak

45
ขออนุญาตใช้กระทู้นี้ต่อคำถามเพิ่มเติมนะคะ
 หนูมีโปรเจ็คชื่อ Sample หนูลองนำคำสั่งในนี้ไปประยุกต์ใช้เป็นดังนี้
โค๊ด: [Select]
oFSO.CopyFile CurrentProject.Path & "\" & CurrentProject.Name, "D:\" & "Backup " & CurrentProject.Name
ซึ่งมันก็ใช้ได้ดีเลยทีเดียว โดยจะได้ไฟล์สำรองเป็น BackupSample ตามที่ต้องการ
ประเด็นปัญหาก็คือ หากเราไปเปิดตัวไฟล์สำรอง BackupSample แล้วสั่งสำรองข้อมูล
มันก็จะได้ไฟล์สำรองตัวใหม่เป็น BackupBackupSample

หนูจึงอยากได้ว่า หากมีการเปิดไฟล์โปรเจ็คที่ มีชื่อขึ้นต้นว่า Backup
ก็ให้มีข้อความบอกผู้ใช้ว่า"ไฟล์นี้เป็นไฟล์สำรองไม่ควรเปิดใช้งานจนกว่าจะเปลี่ยนชื่อไฟล์ใหม่" ประมาณนี้ค่ะ
ไม่ทราบว่าต้องทำอย่างไรคะ

สร้าง Function มาเช็คดูก็ได้คับ ว่าไฟล์เปิดใช้งานจริงหรือไม่

โค๊ด: [Select]
Function checkFileOpen(FilePath As String)
    Dim iFile As Long
    Dim OnErr As Long
    On Error Resume Next
    iFile = FreeFile()
    Open FilePath For Input Lock Read As #iFile

    Close iFile
    OnErr = Err
    On Error GoTo 0
     
    Select Case OnErr
    Case 0:    checkFileOpen = False
    Case 70:   checkFileOpen = True
    End Select
     
End Function

Private Sub Command0_Click()
Dim oFSO As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")

If checkFileOpen("D:\" & "Backup " & CurrentProject.Name) = False Then
   oFSO.CopyFile CurrentProject.Path & "\" & CurrentProject.Name, "D:\" & "Backup " & CurrentProject.Name
   Set oFSO = Nothing
   
Else
    MsgBox "ไฟล์นี้เป็นไฟล์สำรองไม่ควรเปิดใช้งานจนกว่าจะเปลี่ยนชื่อไฟล์ใหม่", vbInformation, "แจ้งเตือน"
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี, diehard4, apirak

46
List ชื่อไฟล์ในโฟลเดอร์ และในซับโฟลเดอร์เข้าสู่  Table ทีเคยเห็นมีแต่แสดงลงใน ComboBox , ListBox แต่ยังไม่เคยเห็นลงใน Table เลยครับ

ช่วยผมที่ครับ
ใน Table จะมี
---------------
Filename
Path
Date_Modified

ผมได้สร้างตัวอย่างโดยเอาโค้ดจากเว็บนอกครับ เครดิต Allen Browne นะครับ มาประยุกต์ใช้กับตัวอย่างนี้
น่าจะตอบโจทย์ที่คุณอยากได้

คุณสามารถนำไปกำหนดค่าเพิ่มเติมได้เช่น

Private Sub Command2_Click()
Dim StrFloderpath As String
Dim strPath As String
Dim strFileSpec As String
Dim booIncludeSubfolders As Boolean

    StrFilePath = Me.txtFloderpath
    strPath = StrFilePath
    strFileSpec = "*.*"            'ค้นหากำหนดคุณลักษณะเช่นหาเฉพาะไฟล์นามสกุลที่ระบุเช่น  strFileSpec = "*.doc"    เป็นต้น
    booIncludeSubfolders = True  ' กำหนดให้ค้นหาได้ว่าเอาเฉพาะ Folder หลัก (กำหนดเป็น False) หรือหาใน SubFolder ด้วย (True)
    ListFilesToTable strPath, strFileSpec, booIncludeSubfolders
End Sub


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

47
ถ้าใช้การสร้าง Unbound Control ไว้ส่วนหัวแล้วกรอกข้อมูลจากบนนี้ น่าจะพอทำได้คับ
ส่วนการให้ข้อมูลล่าสุดมาแสดงบนสุด ผมใช้การสร้างฟิลล์ อีกฟิลล์ datatype Date/Time กำหนด ค่าเริ่มต้นเป็น Now แล้วกรองค่าจากมากไปหาน้อยครับ
หรือถ้ามี ID แบบ Autonumber ก็เอามากรองได้เลยครับไม่ต้องสร้างฟิลล์เพิ่ม
ตัวอย่างด้านล่าง

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

48
ห้อง MS Access / : Modul not found
« เมื่อ: 07 พ.ค. 62 , 08:38:54 »
พอดีเปิด 64bit ไม่ได้ แต่พอแปลงเป็น 32bit ลองเปิดดูเปิดได้ปกติ
โพสต์นี้ได้รับคำขอบคุณจาก: Supanida

49
:sweat:Copy File ไปใช้อีกเครื่อง Listbox ในฟอร์ม ไม่ทำงานเลือกเลื่อน แล้วชุดข้อมูลไม่เปลี่ยนให้ Access2013 ทั้ง 2 เครื่อง
รบกวนด้วยครับ

นำไปใช้เครื่องอื่น เปิด Trust Center ให้ Macro ทำงานได้หรือยังครับ

ลองดูวิธีตามนี้ครับ
https://www.ugetproject.com/wp/ms-office-access/ตั้งค่าให้vbaทำงาน.html
โพสต์นี้ได้รับคำขอบคุณจาก: somchai

50
ปัญหานี้อาจจะเกิดจาก References ไม่ครบถ้วน หรือเปล่า ลอง เอาหน้า References มาดูหน่อยครับ
แจ้ง version ของ Office ด้วยนะ
การตรวจสอบ เปิดหน้าต่างเขียนโค้ด หรือที่ งานของเรากด Alt+F11  เลือกรายการ tab ชื่อ  Tools > References. 
แล้วลองตรวจเช็คดูครับ
ของผมปกติเจออย่างต่ำก็ 4 รายการคับ
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

51
Combobox นิยมใช้ในการเลือกรายการหรือเลือกจากตัวเลือกที่สร้างขึ้นมามากกว่าจะใช้การ ใส่ตัวเลขนะครับ
แต่ถ้าใส่ตัวเลือก จาก ID แล้ว แสดงส่วนของ Detail ก็ว่าไปอย่าง
ถ้าเป็นการใส่ตัวเลขก็ใช้ textbox ก็ได้ เลยสงสัยว่าการนำไปใช้ๆทำอะไรครับ

เช่น
โค๊ด: [Select]
Private Sub Combo_Box_1_AfterUpdate()
If Not IsNull(Me.Combo_Box_1) Then
Me.Combo_Box_2 = Me.Combo_Box_1
Me.Combo_Box_3 = Me.Combo_Box_1
End If
End Sub



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

52
เราเอา code ไปใส่ใน module ได้ไหมครับ  เพราะทุกฟอร์มที่เปิดจะ เปิดใช้เหมือนกัน  จะได้ไม่ต้องไใส่ใน form load   ของ property
ท่านไปกำหนดของแต่ละฟอร์ม ก่อนเรียก Function มาใช้นะครับ


ที่ Module

โค๊ด: [Select]
Public Function MyKeyCode(KeyCode As Integer, Shift As Integer) As Integer
    Select Case KeyCode
        Case vbKeyF1
            MyKeyCode = 0
         MsgBox "F2 = Previous Record" & vbCrLf & "F3 = Next Record" & vbCrLf & _
         "F4 = Save Record" & vbCrLf & "F8 = Open Reports" & vbCrLf & _
         "F10 = Save And Exit", vbInformation + vbSystemModal, "HELP"
         
         Case vbKeyF2
            MyKeyCode = 0
             On Error Resume Next
             DoCmd.GoToRecord , , acPrevious
           
         Case vbKeyF3
            MyKeyCode = 0
            On Error Resume Next
            DoCmd.GoToRecord , , acNext
       
          Case vbKeyF4
            MyKeyCode = 0
            DoCmd.RunCommand acCmdSaveRecord
           
            Case vbKeyF8
            MyKeyCode = 0
            DoCmd.OpenReport "Report1", acViewNormal
         
             Case vbKeyF10
                DoCmd.Close , , acSaveYes
       
        Case Else
            MyKeyCode = KeyCode
    End Select
End Function

ที่ฟอร์มแต่ละฟอร์ม Event Keydown เอาโค้ดนี้ไปวางไว้ได้เลย
โค๊ด: [Select]
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
KeyCode = MyKeyCode(KeyCode, Shift)
End Sub

หมายเหตุที่ Select Case แต่ละอันท่านไปปรับเปลี่ยนการทำงานได้ตามสะดวกครับ
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

53
สร้าง แถบ Ribbon มาใช้เองก็ได้คับ แล้วเลือก สัญลักษณ์เครื่องปริ้นมาแสดงไว้พอจะปริ้น ก็ Ribbon เอาเลย
โพสต์นี้ได้รับคำขอบคุณจาก: diehard4

54
แก้เป็นแบบนี้ได้ไหม เป็นการกำหนดเงื่อนไขว่า ถ้า textbox barcode ว่าง ก็ให้ออกจากการทำงานที่เหลือ

โค๊ด: [Select]
Private Sub Command122_Enter()
On Error Resume Next
if isnull(me.Barcode) then
Me.Barcode.SetFocus
exit sub
else
Forms("Sale").subformsale.Form.Item_no = Barcode
subformsale.SetFocus
DoCmd.GoToRecord , , acNewRec
DoCmd.GoToControl "Barcode"
Barcode.SetFocus
Barcode = Null
end if
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: ekppom

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