แสดงกระทู้

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

หน้า: [1]
1
คลิกขวา เลือก preperty เลือก open with

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

2
 ลง Access เพียงเวอร์ชั่นเดียวก็พอครับ 2013 กับ 2019 แทบจะไม่ต่างกันเลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: assetthai

3
ถ้าเท่ากันทุกงวดงั้นโค๊ดจะเป็นแบบนี้

โค๊ด: [Select]
Private Sub Command0_Click()
Dim rs As DAO.Recordset
    Dim i As Integer
    Dim getMonth As String
    Dim getYear As String
    Dim getDate As String
    Dim getTotal As Long
    Dim getPay As Long
    Dim getPayMonth As Long
    Dim getLastpay As Long
    Dim getInterest As Long
    Set rs = CurrentDb.OpenRecordset("Table1", dbOpenDynaset)
    getTotal = 98000   'ส่วนที่จะสร้าง textbox ระบุยอดเงิน
    getDate = "5"     'ส่วนที่จะสร้าง textbox กำหนดวันที่ชำระ
    getMonth = DatePart("m", Date)
    getYear = DatePart("yyyy", Date)
    getPay = (getTotal) / 36
    getPayMonth = getTotal
    Do Until i > 36
    For i = 1 To 36
       getMonth = getMonth
       If getMonth > 12 Then
       getYear = getYear + 1
       getMonth = "1"
       Else
       getYear = getYear
       End If
           '---------------เพิ่มเรคคอร์ดใหม่--------------
         rs.AddNew
    'ใส่ชื่อฟิลด์ที่ต้องการ และใส่ค่า โดยกำหนด Data Type ให้ถูกต้อง ถ้าเป็น Text ต้องมี "" คล่อม ถ้าเป็นตัวเลขไม่ต้องมี
       rs!รหัส = "001"
       rs!ชื่อสินค้า = "งวดที่ " & i
       rs!วันครบกำหนด = CDate(getDate & "/" & getMonth & "/" & getYear)
        If i = 36 Then
        rs!จำนวน = getPayMonth
        Else
        rs!จำนวน = getPay
        End If
        rs!ดอกเบี้ย = (((getTotal * 15) / 100) / 12)
        rs.Update
        getMonth = getMonth + 1
        getPayMonth = getPayMonth - getPay
        Next i
        Loop
    '-----------------------------------------
    rs.Close: Set rs = Nothing

End Sub

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

4
พรุ่งนี้มาทำให้ครับ พอทำได้ครับ
พอดีเลิกงานแล้ว
โพสต์นี้ได้รับคำขอบคุณจาก: assetthai

5
ลองดูตัวอย่างนี้นะครับน่าจะได้ข้อมูลแบบที่คุณต้องการนะ

ผมใช้การตรวจสอบโดยการนับจำนวนครั้งของการ Append ข้อมูลลงไปในตาราง customer
โดยเช็คว่าถ้า Employee ไหน asign = 0 แล้วก็ให้ลบออกไป ไม่นำไป Append ต่อครับ

โค้ดของคิวรี่ในการเช็คจำนวนการAppend ข้อมูล
โค๊ด: [Select]
SELECT tbl_Job.Employee_Name, Count(tbl_Customer.Employee_Name) AS CountCTM, tbl_Job.assign, Nz([assign],0)-Nz([CountCTM],0) AS Remaining
FROM tbl_Job LEFT JOIN tbl_Customer ON tbl_Job.Employee_Name = tbl_Customer.Employee_Name
GROUP BY tbl_Job.Employee_Name, tbl_Job.assign;

โดยจะต้องมีฟอร์มที่มีปุ่มกดให้โค้ดทำงานโดยมีโค้ดประมาณนี้ครับ
โค๊ด: [Select]
Private Sub Command0_Click()
Dim rst As DAO.Recordset
Dim IntAssign As Integer
Dim sql As String
Dim I As Long
    Set rst = CurrentDb.OpenRecordset("tbl_Job", dbOpenDynaset)
 
 
rst.MoveFirst
Do Until rst.EOF
IntAssign = rst!Assign
For I = 1 To IntAssign
If IntAssign = rst!Assign Then
sql = "INSERT INTO tbl_Customer ( Employee_Name, Cust_Name ) SELECT QryCheckRemaining.Employee_Name, 'XXXX' AS Expr1 FROM QryCheckRemaining WHERE (((QryCheckRemaining.Remaining)>0));"
DoCmd.SetWarnings False
           DoCmd.RunSQL sql
End If
    Next
  rst.MoveNext
  Loop
  DoCmd.SetWarnings True
    rst.Close
    Set rst = Nothing
End Sub

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

6
ตัวอย่างไฟล์ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: assetthai

7
รบกวนสอบถามอาจารย์ครับ ผมต้องการทำ ปุ่ม เพื่อจะลบ table ชื่อ table1 ออกจากฐานข้อมูล อยากให้โปรแกรมตรวจสอบก่อนว่ามีตาราง table1 อยู่หรือไม่ ถ้าไม่มี ให้ข้ามไปทำขั้นตอนต่อไป ถ้ามีให้ลบก่อน แล้ว ทำตามขั้นอื่นตอนต่อไป ขอบคุณครับ
ลองทดสอบดูนะครับ

Private Sub Command0_Click()
 call CheckTableToDelete
End Sub

Sub CheckTableToDelete
 Dim tbd As TableDef
  Dim msg As String
  For Each tbd In CurrentDb().TableDefs
    If tbd.Name = "table1" Then
     msg = MsgBox("ตรวจพบตาราง Table1" & vbCrLf & "คุณต้องการลบตาราง ? ", vbQuestion + vbYesNo, "ระบบสอบถาม")
     If msg = vbYes Then
        DoCmd.DeleteObject acTable, "table1"
     End If
End If
  Next tbd
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: assetthai

8
สวัสดีครับ จะรบกวนปรึกษาครับ Code ครับ โดยผมต้องการทำ Form แก้ไขประวัติพนง.โดยทำ Form ใหญ่ 1 Form และ SubForm ย่อย 2 Subform
1. Subform1(บน) เอาไว้ใช้เปน Selector ตามแต่ละ WorkID
2. Subform2(ล่าง) เอาไว้ใช้แสดงรายละเอียดของจาก SubForm1 ซึ่งการแก้ไขข้อมูล จะแก้ไขผ่าน Subform นี้ครับ
โดยทั้งสอง Subform ใช้ Queries ตัวเดียวกัน

ความต้องการของผมคือ หากกรอก TerminatedDate ที่ Record ใด Record หนึ่ง ก็ให้ค่า TerminatedDate ที่กรอกนั้น ถูก Insert ลงไปยัง Record อื่นๆที่มี ContractorID เดียวกันให้หมด ผมควรจะเขียนโค้ดอย่างไรดีครับ

ปล. โค้ดที่ผมเขียนคือ ตามด้านล่างนี้ครับ ซึ่งไม่ได้ผลเลยครับ
รบกวนทุกท่านด้วยครับ ขอบคุณมากครับ

Private Sub TerminatedDate_Click()
    DoCmd.RunSQL "SELECT GenerateID FROM tblWork WHERE GenerateID'" = Me.GenerateID
    DoCmd.RunSQL "INSERT INTO tblWork([TerminatedDate])" & _
        "Values ('" & Me.TerminatedDate & "');"
    End If
End Sub

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

9
แบบนี้ได้ไหมครับ อาจจะมีวีธีดีกว่านี้ รอท่านอื่นมาต่อ

มี 2 คิวรี่นะครับ
คิวรี่แรก


SELECT Table1.[เลขที่สัญญา], Max(Table1.[วันที่]) AS MaxOfวันที่, Max(Table1.เวลา) AS MaxOfเวลา
FROM Table1
GROUP BY Table1.[เลขที่สัญญา];

Table 1 คือ ชื่อตารางนะครับ
คิวรี่ที่ 2 ใช้ sub Query


SELECT Table1.*
FROM Table1 INNER JOIN Query1 ON (Table1.เวลา = Query1.MaxOfเวลา) AND (Table1.[วันที่] = Query1.[MaxOfวันที่]) AND (Table1.[เลขที่สัญญา] = Query1.[เลขที่สัญญา]);



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

10
Between IIf(Day(Date())>=3,DateSerial(Year(Date()),Month(Date()),2),DateSerial(Year(Date()),Month(Date())-1,2)) And IIf(Day(Date())>=3,DateSerial(Year(Date()),Month(Date())+1,2),DateSerial(Year(Date()),Month(Date()),2))

ความหมายก็คือ
หาข้อมูลระหว่างวันที่ (ถ้าวันที่ >= 3, ให้เป็นวันที่ 2 ของเดือนนี้, ถ้าไม่ใช่ก็เป็นวันที่ 2 ของเดือนที่แล้ว) และวันที่ (ถ้าวันที่ >= 3, ให้เป็นวันที่ 2 ของเดือนหน้า, ถ้าไม่ใช่ก็เป็นวันที่ 2 ของเดือนนี้)

ยังไงก็ตาม ถ้าดูตามเงื่อนไขที่คุณบอกมา จะพบว่าข้อมูลของวันที่ 2 จะนำมาหาผลลัพธ์ถ้าวันนี้เป็นวันที่ 2 เอง และแม้วันนี้จะเป็นวันที่ 3 ซึ่งเป็นวันที่เปลี่ยนเงื่อนไข แต่ข้อมูลของวันที่ 2 (เมื่อววาน) ก็ยังถูกนำมาหาผลลัพธ์อยู่ดี ลองพิจารณาดีๆว่าถูกต้องหรือไม่นะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: assetthai

หน้า: [1]