แสดงกระทู้

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 - MiKu

หน้า: [1] 2 3
1
หนูมี tb พัสดุ ไว้เก็บข้อมูลพัสดุ
และมี tb รายการ ไว้ดึงข้อมูลจาก tb พัสดุ มาใช้
แต่พอจะเพิ่มรายใหม่เข้าไป ก็ต้องไปเพิ่มใน tb พัสดุ ก่อน
มีวิธีที่สามารถเพิ่มใน ฟรอมเดียวกันได้ไหม

จริงๆ สามารถทำได้ แต่ไม่ควรทำอย่างยิ่ง การทำให้ฟอร์มเพียงฟอร์มเดียวทำงานหลายอย่างพร้อมกันต้องมั่นใจว่าจะไม่เกิดข้อผิดพลาด

เพราะอาจมีการเพิ่มรายการผิดประเภทหรือข้อมูลซ้ำซ้อนได้ง่ายมากๆๆๆๆ

ดังนั้นจึงควรเพิ่มรายการพัสดุก่อน

เวลาจะใช้งานก็ค่อยดึงข้อมูลจากพัสดุมาใช้งาน
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

2
แสดงว่ารายการที่เพิ่มไปใหม่ไม่มีรหัสรายการสินค้านี้อยู่ในตาราง tb พัสดุครับ ก่อนนำเข้าต้องไปเพิ่มในฐานข้อมูลก่อนครับ
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

4
ลองใช้ Report Wizard ครับ มันสามารถเลือกรูปแบบ Report ที่จัด Grouping ได้
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

5
การใช้ FIFO ต้องมีเรื่องของ LotNo ด้วยครับ โดยให้สร้างตารางที่มีข้อมูลประมาณนี้

ตารางที่ 1 tblProduct (SKU, Description, UOM)
ตารางที่ 2 tblFIFO (SKU, LotNo, ReceivingDate, ReceivingAmount, RemainingAmount, Price)
ตารางที่ 3 tblMovementRecord (MovementID, MovementDate, SKU, LotNo, MovementAmount)
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

6
อันดับแรกตั้งค่าภาษาให้เหมาะสมก่อน
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

7

ลองดูตัวอย่างนี้นะครับ ไม่รู้จะเวิคไหมนะ
โค๊ดจะแสดงผล ในมุมมอง Print Preview หรือ มุมมองเหมือนพิมพ์นะครับ
โค๊ดจะอยู่ใน Event Report Detail นะครับ

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) 'ตรง รายละเอียด ถ้าเป็นภาษาอังกฤษให้เปลี่ยนเป็น Detail_Print แทนรายละเอียด
Dim ctl As Control, strText As Variant, strName As String
    Me.ScaleMode = 1
    For Each ctl In Me.Detail.Controls 'ตรง รายละเอียด ถ้าเป็นภาษาอังกฤษให้เปลี่ยนเป็น Me.Detail แทนรายละเอียด
        If ctl.ControlType = acTextBox Then
        If ctl.Name = "CustomerName" Then 'สีแดงคือชื่อ textbox ที่ต้องการปรับขนาดข้อความ
       
        strName = ctl.Name
            If Nz(ctl.Tag, "") = "" Then
                ctl.Tag = ctl.FontSize
            End If
            ctl.FontSize = ctl.Tag
            Me.FontSize = ctl.FontSize
            strText = ctl.Value
           If Len(strText) > 0 Then
            Do Until TextWidth(strText) < ctl.Width
                ctl.FontSize = ctl.FontSize - 1
                Me.FontSize = ctl.FontSize
            Loop
            Do Until TextHeight(strText) < ctl.Height - (ctl.Height * 0.26)
                ctl.FontSize = ctl.FontSize - 1
                Me.FontSize = ctl.FontSize
            Loop
        End If
        End If
       End If
    Next ctl

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

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

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

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

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

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

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

11
ผมได้ทำตัวอย่างการกำหนด ช่วงเวลาในแต่ละวัน โดยกำหนดเช็คค่าจาก
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
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

12
แก้โค้ดจาก Query อันเดิม เป็นแบบนี้ดูนะครับ
สาเหตุเกิดจากข้อจำกัดของข้อมูล มันจะแสดงแค่ 255 เท่านั้น
ใน Memo Field นั้นสามารถบรรจุได้ถึง 64,000 characters
วิธีที่จะให้คิวรี่แสดงข้อมูลของ Memo field คือการใช้ First ที่ Field ที่เป็น Memo แทน Group By ครับ


โค๊ด: [Select]
SELECT Table1.N1, First(Table1.[รายละเอียด]) AS ส่วนรายละเอียด
FROM Table1
GROUP BY Table1.N1;

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

13
หนูมี textรายละเอียด เก็บขู้ลแบบ Long Text ข้อมูลนี้มีข้อความยาวมาก พอนำไปทำ qurey ตอนยังไม่ Group By ข้อความมาปกติ พอ Group By ข้อความถูกตัดหายไป พอจะมีธีแก้ไขหรือป่าวค่ะ
คือ หนูจำเป็นต้อง Group By query ไว้ คะ
ทำไฟล์ตัวอย่างคร่าวๆมาได้ไหม
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

14
อ้างถึง
พอเอาไปคิด not in โปรแกรม ก็จะไม่โชวราคา 30 20 40 ออกมา (หนูเข้าใจถูกหรือป่าวค่ะ)

เข้าใจถูกแล้วครับ ในส่วนคิวรี่ ที่ 2 นั้น ค่าที่ได้มาจะไม่รวม กับ ราคาหลังสุด(คิวรี่ที่ 1)

พอเราได้ คิวรี่  1 กับ 2 แล้ว
ก็ใช้ การ Join Query ในส่วนของ ID เพื่อจะได้ข้อมูลมาต่อกันคือ(คิวรี่ที่3)
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

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

16
สามารถ รีโมท Anydesk ไปเช็คได้ไหม
ผมส่ง ID LINE ไปทางข้อความนะครับ


ถ้าวิธีนี้ไม่เวิค หรือช้าเกินไป อาจจะหาวิธีอื่นๆ ที่ดีกว่าต่อไปแต่ขอไปเทสก่อน
โพสต์นี้ได้รับคำขอบคุณจาก: MiKu

17
Join table มักเจอปัญหาแบบนี้ครับ ความช้ามาเยือนทันที
มั่นใจใช่ไหมครับว่า ทำตามขั้นตอนแล้วช้า
ข้อมูลสินค้าเยอะขนาดไหนครับ ประมาณกี่เรคคอร์ดได้

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

18
Ex
รหัสสินค้า          ราคา
  A                    5          บาท
  A                    10        บาท
  A                    15        บาท
อยากให้ query แสดง (ใน query มีแต่ first กับ Last)
รหัสสินค้า          ราคารวมทั้งหมด        ราคาก่อนหน้า     ราคาหลังสุด
  A                        30                      10                  15       


อาจจะมีวิธีดีกว่านี้นะครับ
เท่าที่คิดวิธีได้ก็แบบนี้ คือ หา Last แล้วเอาไปเก็บไว้ แล้วหา Last อีกครั้ง (ใช้ 3 คิวรี่เลย)
1.เมื่อเราสร้างคิวรี่ ได้ Last คือตัวสุดท้ายของ รหัสนั้นมาแล้ว
2.สร้างคิวรี่ใหม่เข้ามาอีกแล้วกำหนดให้ แสดงข้อมูลโดยไม่ให้นำ Last จากข้อ 1 มาแสดง ใช้โค้ด ตรง Criteria ว่า
Not In (select ราคาหลังสุด from [Queryราคาหลังสุด])
เราก็จะได้ราคา ที่เหลืออันอื่นๆ โดยเว้น Last ข้อ 1 ครับ
3.เมื่อได้ข้อ 2 มาแล้วสั่ง Last อีกครั่ง เพื่อหา Last เพิ่มอีกตัว
4.นำมา Join Table กันเพื่อแสดงข้อมูลที่ได้ทั้งหมดครับ


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

หน้า: [1] 2 3