แสดงกระทู้

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 ... 24
33
ใช้การดักค่าว่างด้วย Nz Fuction ครับถ้าค่ามันว่างให้แทนค่าเป็น 0
รูปแบบ คือ Nz([ชื่อฟิลล์]),0)

โค๊ด: [Select]
SELECT [VATSALE Query1].Vatmonth, [VATSALE Query1].[Sum Of Price] AS SALE, Format(Nz(DLookUp("[Sum Of Price]","[Vatbuy Query1]","Vatmonth = '" & [Vatmonth] & "'"),0),"Standard") AS Buy, Format(Nz([sale])-Nz([buy]),"Standard") AS [Sale-Buy]
FROM [VATSALE Query1];
โพสต์นี้ได้รับคำขอบคุณจาก: pim

34
หรือจะใช้ Dlookup แทนการ Join Table ก็น่าจะแสดงผลเร็วดีครับ
โค๊ด: [Select]
SELECT [VATSALE Query1].Vatmonth, [VATSALE Query1].[Sum Of Price] AS SALE, Format(DLookUp("[Sum Of Price]","[Vatbuy Query1]","Vatmonth = '" & [Vatmonth] & "'"),"Standard") AS Buy, Format(Nz([sale])-Nz([buy]),"Standard") AS [Sale-Buy], *
FROM [VATSALE Query1];
โพสต์นี้ได้รับคำขอบคุณจาก: pim

35
ลองดูโค้ดนี้ครับ ไม่รู้รันผ่านไหมยังไม่ได้เทสครับ สร้างคิวรี่ใหม่ขึ้นมาเอา SQL นี้ไปวางแล้วรันดู

โค๊ด: [Select]
SELECT [VATBUY QUERY1].VatMonth, [VATSALE QUERY1].[Sum Of Price] AS Sale, [VATBUY QUERY1].[Sum Of Price] AS Buy, Format(Nz([sale])-Nz([buy]),"Standard") AS [Sale-Buy]
FROM [VATBUY QUERY1] INNER JOIN [VATSALE QUERY1] ON [VATBUY QUERY1].VatMonth = [VATSALE QUERY1].VatMonth;
โพสต์นี้ได้รับคำขอบคุณจาก: pim, apirak

36
ผมมีตัวอย่างการทำงานแบบที่คุณบอกไว้ โดยใช้ปุ่ม Run แทน Event Enter ของ เครื่อง Barcode นะครับ

แบบที่ 1
1.ระบุรหัส Barcode แล้วกด Run ข้อมูลจะสร้าง รหัส Barcode แบบเดียวกันจำนวน 5 แถว สวนรายละเอียด ของ Combobox คุณไปกำหนดเอาเองนะครับ
2.ข้อมูลที่ได้ในฟอร์มจะจัดเก็บไว้ในตารางชั่วคราว ชื่อ LNBTemp
3.เมื่อต้องการบันทึก ผมสร้างปุ่มบันทึกไว้ ถ้าตอบ Yes ข้อมูลในฟอร์มจะนำเข้าไปยังตารางหลักทันที และลบข้อมูลในตารางชั่วคราวทันที เพื่อรับข้อมูลใหม่

แบบที่ 2
1.ระบุรหัส Barcode แล้วกด Run ข้อมูลจะสร้าง รหัส Barcode มา 1 อันและพร้อมรับรหัส Barcode อันต่อไป 
2.ข้อมูลที่ได้ในฟอร์มจะจัดเก็บไว้ในตารางชั่วคราว ชื่อ LNBTemp
3.เมื่อต้องการบันทึก ผมสร้างปุ่มบันทึกไว้ ถ้าตอบ Yes ข้อมูลในฟอร์มจะนำเข้าไปยังตารางหลักทันที และลบข้อมูลในตารางชั่วคราวทันที เพื่อรับข้อมูลใหม่
ลองดูตัวอย่างด้านล่างครับ ทั้ง 2 แบบ
โพสต์นี้ได้รับคำขอบคุณจาก: phatthawat

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

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