แสดงกระทู้

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 ... 14 15 16 [17] 18 19 20 ... 46
289
ห้อง MS Access / : error 2501 เปิดรายงาน
« เมื่อ: 05 ม.ค. 64 , 08:44:10 »
ใช้การดักจับ error ได้ไหมครับ ลองดูครับ

Private Sub rptTest_Click()
    On Error GoTo ErrHandler
    DoCmd.OpenReport "ReportNotifyMulti", acViewPreview
    Exit Sub
ErrHandler:
    If Err = 2501 Then
      Resume Next
    Else     
        MsgBox Err.Description, vbExclamation
    End If
End Sub


ถ้าไม่ได้จะหาวิธีอื่นให้ครับ


290
ผมต้องการจัดเรียงลำดับซอย เช่น กวางทอง1,1/2,......100,100/1
                                        ทองหลาง1,2/1.......100,100/3
ต้องการเขียนคิวรีในการจัดเรียงซอย เป็นเช่น กวางทอง1,กวางทอง2 ฯลฯ

หลักการเดียวกับการลำดับบ้านเลขที่ครับ
ลองดูกระทู้นี้นะครับ
https://www.thai-access.com/index.php?topic=1266.msg5600#msg5600

291
ต้องนำปีงบ มาร่วมด้วยครับในการนับ

เช่น
select
    (select count(*) from ชื่อตาราง where ชื่อตาราง.ID <= t1.ID and ชื่อตาราง.ปีงบ = t1.ปีงบ) as เลขกอง,
    *
from ชื่อตาราง t1


292
ปรับใหม่ล่าสุด V3 นะครับ น่าจะตรงสุดละ

293
ขอทราบอีกคำถามหนึ่งนะคะ>> ทำเลขลำดับในForm ยังไงหรอคะ? เพราะถ้าเป็นใน Report ก็สร้างtextbox ให้ control souce "=1 " และเลือก Running Sum เป็น "over all"  รบกวนช่วยหน่อยนะคะ ขอบคุณค่ะ

ข้อที่ 1 ส่งตัวอย่างข้อมูลมาครับ

ข้อที่ 2 ลองดูจากกระทู้นี้ครับมีตัวอย่าง
https://www.thai-access.com/index.php?topic=331.msg1345#msg1345

294
ถ้ามีตัวเลขใน field เป็น 12/63 ต้องการให้แสดงผลเป็น ธันวาคม ุ63 เขียนฟังก์ชั่นแบบไหนครับ

ใช้ Format และ Cdate มาช่วยครับเพราะโดยปกติ ถ้าข้อมูล 12/63 เมือเราใช้ Cdate(Fieldข้อมูล) จะได้ 01/12/2563
และนำไปใช้กับ Format เช่น

Format(CDate([Fieldวันที่]),"mmmm yy")

295
1.ศึกษาการสร้าง HeadGroup ของรายงานครับ โดยเอา ประเภทใหญ่ เป็น Headgroup ใน thai access นี้มีตัวอย่างอยู่เยอะครับ
2.ใช้การกำหนดรูปแบบการแสดง อยู่ตรง Sectionต่างๆ ครับ มันจะมีให้บังคับขึ้นหน้าใหม่ ก่อนส่วน หลังส่วน หรือก่อนและหลัง

ถ้ามีตัวอย่างข้อมูลมาผมทำตัวอย่างให้ได้ครับ

296
งั้น Endtime รูปแบบข้อมูลต้องเป็นแบบ General Date ครับ

ลองดูตัวอย่างการเช็คเงื่อนไข โดยกำหนดว่า ถ้า Endtime น้อยกว่า StartTime ให้บวกไปอีก 1 วันเช่น

Private Sub SaveData()
 Dim rst As DAO.Recordset
 Dim dtEndtime As String
 
            Set rst = CurrentDb.OpenRecordset("table1", dbOpenDynaset)
            rst.AddNew
            rst!Ondate = Me.Ondate
           
            If Me.EndTime < Me.StartTime Then
            dtEndtime = Me.Ondate + 1 & " " & EndTime
            Else
            dtEndtime = Me.Ondate & " " & EndTime
            End If
           
            rst!StartTime = Me.StartTime
            rst!EndTime = CDate(dtEndtime)
            rst.Update
           
            rst.Close
            Set rst = Nothing
End Sub


และกำหนด รูปแบบข้อมูลในตารางเป็น Date/Time กำหนดเป็น General Date

297
ที่ Module

Option Compare Database
#If Win64 Then
    Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _
        Alias "PlaySoundA" (ByVal lpszName As String, _
        ByVal hModule As LongPtr, ByVal dwFlags As Long) As Boolean
#Else
    Private Declare Function PlaySound Lib "winmm.dll" _
        Alias "PlaySoundA" (ByVal lpszName As String, _
        ByVal hModule As Long, ByVal dwFlags As Long) As Boolean
#End If
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000

Function SoundMe() As String
    Call PlaySound("c:\windows\media\policesiren.WAV", 0, SND_ASYNC Or SND_FILENAME)
    SoundMe = ""
End Function

Public Sub StopSound()
    PlaySound vbNullString, 0, 0
End Sub


ที่ command button
เพิ่ม
  SoundMe 'เมื่อเล่นเสียงแล้ว ต่อไปจะเด้ง msgbox ก็ดักเงื่อนไขการกด OK
  If MsgBox("ข้อมูลซ้ำกัน กรุณาตรวจสอบ", vbOKOnly, "program") = vbOK Then
    StopSound
  End If


298
เปลี่ยน Fotmat จาก พุทธศักราช เป็น คริสต์ศักราช ก็ได้ละครับ


299
ผมได้ทำตัวอย่างการกำหนด ช่วงเวลาในแต่ละวัน โดยกำหนดเช็คค่าจาก
1.วันที่ textbox ชื่อ OnDate
2. เวลาเริ่ม ชื่อ StartTime
3. เวลาสิ้นสุดชื่อ EndTime

ตารางชื่อ table1
มีฟิลล์เหมือนชื่อ คอนโทรล

โค๊ด: [Select]
Private Sub Command1_Click()
      If Me.Dirty Then
        Dim strWhere As String, strMsg As String
            With Me
            strWhere = "(([StartTime]<#%S#) AND " & _
                       "([EndTime]>#%E#) AND " & _
                       "([OnDate]=#%D#))"
            strWhere = Replace(strWhere, "%S", Format(.EndTime, "HH:mm:ss"))
            strWhere = Replace(strWhere, "%E", Format(.StartTime, "HH:mm:ss"))
             strWhere = Replace(strWhere, "%D", Format(.OnDate, "mm/dd/yy"))
 
            Dim rsDao As DAO.Recordset
            Set rsDao = CurrentDb.OpenRecordset("SELECT * FROM [Table1] WHERE " & strWhere, dbOpenDynaset)
             If .OnDate = .OnDate And .EndTime < .StartTime Then
            MsgBox "ท่านระบุช่วงเวลาผิด เวลาเริ่มต้องไม่น้อยกว่าเวลาสิ้นสุด", vbInformation, "แจ้งเตือน"
            ElseIf rsDao.RecordCount = 0 Then
               MsgBox "สามารถจองช่วงเวลานี้ได้", vbInformation, "สถานะการจอง"
               Exit Sub
            Else
                MsgBox "มีการจองช่วงเวลานี้แล้ว", vbInformation, "สถานะการจอง"
 
                Do While Not rsDao.EOF
                        strMsg = Replace(strMsg, "%D", Format(rsDao!OnDate, "dd-mmm-yy"))
                        strMsg = Replace(strMsg, "%S", Format(rsDao![StartTime], "HH:mm"))
                        strMsg = Replace(strMsg, "%E", Format(rsDao![EndTime], "HH:mm"))
                    rsDao.MoveNext
                Loop
            End If
                Set rsDao = Nothing
            End With
    End If
End Sub

300
1.ให้เพิ่มโค้ดที่โมดูล

โค๊ด: [Select]
Declare Function apisndPlaySound Lib "winmm" Alias "sndPlaySoundA" (ByVal filename As String, ByVal snd_async As Long) As Long
Function Playsound(sWavFile As String)
If apisndPlaySound(sWavFile, 1) = 0 Then
MsgBox "ไม่พบเสียง!"
End If
End Function

2. จากโค้ดเดิม เพิ่มเป็นแบบนี้

Dim wisroot As String
  Dim str1 As String
  wisroot = Me.[QRCode].Value
  str1 = "[QRCodePCB]=" & "'" & wisroot & "'"
 
  If Me.[QRCode] = DLookup("[QRCodePCB]", "dbo_AOI40241CA", str1) Then
  Playsound ("C:\SoundFloderName\WavFileName.wav")
  MsgBox "ข้อมูลซ้ำกัน กรุณาตรวจสอบ"
  Me.Undo


301
ประมาณเสียงเพลง หรือ เสียงไซเลนครับ
เสียง Beep ไม่มีเสียงเลย
งั้นคำสั่งให้เล่นเสียง wav ได้ไหม

302
Private Sub QRCode_AfterUpdate()
 Dim wisroot As String
  Dim str1 As String
  wisroot = Me.[QRCode].Value
  str1 = "[QRCodePCB]=" & "'" & wisroot & "'"
 
  If Me.[QRCode] = DLookup("[QRCodePCB]", "dbo_AOI40241CA", str1) Then
  beep
  MsgBox "ข้อมูลซ้ำกัน กรุณาตรวจสอบ"
  Me.Undo
  Else

303
ใช้การสร้างเงือนไข เอาได้ไหมเช่น
สมมุติคอมโบชื่อ comboname และ Option ชื่อ Opt1 ถึง 4

Private Sub ComboName_AfterUpdate()
If Me.ComboName.Value = 1 Then
Me.Opt1 = True
ElseIf Me.ComboName.Value = 2 Then
Me.Opt2 = True
ElseIf Me.ComboName.Value = 3 Then
Me.Opt3 = True
ElseIf Me.ComboName.Value = 4 Then
Me.Opt4 = True
End If
End Sub

304
แปปนะครับ ผมลองทดสอบแปป

305
  ขั้นแรก ลองลบ office แล้วลงใหม่ดูก่อน
  ถ้าไม่หายลองปรับโค้ดเป็นแบบนี้ Backup ก่อนนะครับ
  วิธีใช้การเปลี่ยนตัวแปร
 เปลี่ยนจาก  Dim olApp As Outlook.Application
 เป็น  Dim olApp As Object

โค๊ด: [Select]
Dim olApp As Object
  Dim olMail As Object
  Const olMailItem As Long = 0

  Set olApp = CreateObject("Outlook.Application")
  Set olMail = olApp.CreateItem(olMailItem)

  olMail.To = Me.mail
  olMail.Subject = "เอกสารเข้าออกพื้นที่"
  olEmail.Attachments.Add "C:\CJ\" & FileName & ".pdf"
  olMail.Body = "Body ของ Email"   

    If Not IsNull(olEmail.To) And Not IsNull(olEmail.SUBJECT) And Not IsNull(olEmail.Body) Then
    olEmail.Send
     Else
     End If

MsgBox ("บันทึกเรียบร้อยแล้ว"), vbInformation

Set oEmail = oApp.CreateItem(olMailItem)
Set oEmail = oApp.CreateItem(olMailItem)

ทำไมมันซ้ำ

306
อ้างถึง
ข้อมูลที่ต้องกรอกบางครั้งมีมากถึง 100 กว่ารายการค่ะ เราเลยอยากทราบว่ามันสามารถดึงเอาข้อมูลไปลงในฟอร์มบางส่วน
สามารถทำได้ครับ ถ้าคุณรายละเอียด รายการสินค้าอยู่แล้วและอยากดึงมาแสดง โดยใช้ รหัสสินค้า มาแสดงในฟอร์มทั้งหมด ส่วนรายละเอียดส่วนอื่นๆ จะเด้งขึ้นมาแสดงตามรายละเอียดของรหัสสินค้าแต่ละตัว

ถ้าทำเป็นขั้นตอนก็จะได้คือ
1.สร้างการนำเข้าข้อมูลมายังตารางของ Access โดยอาจจะต้องอ้างอิงการนำเข้าตาม รายการสินค้าที่มีแต่ละครั้ง
2.เมื่อได้ข้อมูลมายังตารางแล้วสั่งให้กำหนด RecordSource นำ รหัสสินค้าและรายละเอียด อื่นๆ จากการ Join ตาราง ProductDetail มาแสดงบนฟอร์ม

แนวคิดประมาณนี้ครับ เนื่องจากไม่มีตัวอย่างมาให้ลองทำเลย

หน้า: 1 ... 14 15 16 [17] 18 19 20 ... 46