แสดงกระทู้

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

หน้า: 1 2 3 [4] 5 6 7 8
55
ห้อง MS Access / > สอบถามการแยกคอลัมน์
« เมื่อ: 20 มี.ค. 61 , 23:48:25 »
เพิ่ม i As Integer เข้าไปบรรทัดนี้ครับ

Dim splitText() As String, nPart As Integer, stResult As String, i As Integer

56
ห้อง MS Access / > สอบถามการแยกคอลัมน์
« เมื่อ: 20 มี.ค. 61 , 15:18:16 »
สร้าง Module ขึ้นมาแล้วเอาฟังก์ชั่นนี้ไปใส่
โค๊ด: [Select]
Public Function FormatLocation(stLocation As String, zone_or_id As Byte) As String
Dim splitText() As String, nPart As Integer, stResult As String

splitText = Split(stLocation, "-")
nPart = UBound(splitText)
stResult = ""
If zone_or_id = 1 Then
    stResult = splitText(0)
Else
    If nPart > 0 Then
        For i = 1 To nPart
            stResult = stResult & Format(splitText(i), "000")
        Next i
    Else
        stResult = "00000000"
    End If
End If
FormatLocation = stResult

End Function

เสร็จแล้วก็สามารถใช้ Query แบบนี้ได้
SELECT Location, FormatLocation([Location],1) AS Zone, FormatLocation([Location],2) AS ID FROM tblName;


57
ก็ใช้ datasource ที่เป็ฯ Query เฉพาะฟิลด์ที่ต้องการครับ

58
ห้อง MS Access / > SQL Queryตามนี้ค่ะ
« เมื่อ: 16 มี.ค. 61 , 20:16:56 »
SELECT ชื่อตาราง.* FROM ชื่อตาราง WHERE ที่อยู่ Is Not Null AND ที่อยู่ <> ""

59
ห้อง MS Access / > SQL Queryตามนี้ค่ะ
« เมื่อ: 16 มี.ค. 61 , 14:00:49 »
Query แรก ต้องการแสดงทุกรายการ ที่มีSalary หรือ Bonus จะได้
SELECT ชื่อตาราง.* FROM ชื่อตาราง WHERE Salary > 0 OR Bonus > 0

Query สอง ต้องการแสดงทุกรายการ ที่ไม่มีSalary และBonus ค่ะ
SELECT ชื่อตาราง.* FROM ชื่อตาราง WHERE (Salary = 0 OR Salary Is Null) AND (Bonus = 0 OR Bonus Is Null)

60
Docmd.RunSQL "DELETE POD.* FROM POD WHERE POD.PONumber = '" & Me.PONumber & "'"

61
จาก DoCmd.GoToRecord acDataForm, Me.Name, acFirst

สมมติว่า subform นี้มีชื่อฟอร์มของตัวเองว่า "DetailForm"
ดังนั้นคำสั่งข้างบนก็จะแทนค่าได้ว่า DoCmd.GoToRecord acDataForm, "DetailForm", acFirst

แต่เนื่องจากฟอร์ม DetailForm นี้ถูกเปิดเป็น subform อยู่ภายใต้ฟอร์มอื่น ดังนั้น Access มันจะมองหาฟอร์มที่เปิดอยู่ในชื่อ "DetailForm" ไม่เจอมันเลยแทง Error ออกมา

วิธีการแก้คือ ถ้าจะเคลื่อนไปที่ record แรกของตัวเอง ก็เพียงแต่ใช้คำสั่ง
DoCmd.GoToRecord , , acFirst
ง่ายๆเลย ไม่ต้องระบุชื่ออะไร Access มันจะวิ่งหาใน Object ที่คำสั่งนี้อยู่ตามปกติ

62
ห้อง MS Access / > ลบข้อมูลซ้ำ
« เมื่อ: 15 มี.ค. 61 , 21:51:05 »
DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]=" & MySearch!MemberCode & " AND tblName.[Date]=" & CDbl(MySearch!MaxOfDate)

แก้ชือตารางให้ตรงด้วยนะครับ

63
ห้อง MS Access / > การแยกข้อมูลภายในแถว
« เมื่อ: 15 มี.ค. 61 , 09:47:34 »
ลองดูตัวอย่างในฟอร์ม DemoForm ครับ ผมเรียกใช้งาน Query และ Module อยู่ในนั้น

64
ห้อง MS Access / > ลบข้อมูลซ้ำ
« เมื่อ: 14 มี.ค. 61 , 20:09:12 »
โค๊ด: [Select]
Private Sub Delete_Last()
Dim MySearch As Recordset

Set MySearch = CurrentDb.OpenRecordset("SELECT tblName.MemberCode, Count(*) AS CountRec, Max(tblName.Date) AS MaxOfDate FROM tblName GROUP BY tblName.MemberCode HAVING (Count(*))>1;")
If MySearch.RecordCount > 0 Then
    MySearch.MoveFirst
    Do While Not MySearch.EOF
        DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]='" & MySearch!MemberCode & "' AND [Date]=" & CDbl(MySearch!MaxOfDate)
        MySearch.MoveNext
    Loop
End If

MySearch.Close
Set MySearch = Nothing
   
End Sub

65
ห้อง MS Access / > ลบข้อมูลซ้ำ
« เมื่อ: 14 มี.ค. 61 , 17:58:12 »
ตอนคุณ Count หนะ ให้คุณเพิ่ม Max(Date) ไปด้วย เพื่อจะได้รู้ว่าวันที่หลังสุดคือวันอะไร

66
textbox  ได้ค่าผลรวมมาตอนไหน ก็กำหนดให้ Me.[ฟิลด์รวมเงินสุทธิ] = ค่านั้น แค่นี้แหละครับ ถ้าจะเซฟลงตารางเลย ก็ใส่คำสั่ง Me.Dirty = False เพิ่มต่อไปแค่นั้น

67
ห้อง MS Access / > การแยกข้อมูลภายในแถว
« เมื่อ: 14 มี.ค. 61 , 17:40:43 »
ลองดูตามตัวอย่างในไฟล์นะครับ

- มีการใช้ฟังก์ชั่นใน Module InvoiceConv ด้วยนะครับ
- เรียกใช้งานจากฟอร์ม DemoForm จะได้ผลลัพธ์เป็นตาราง ResultTable

68
ห้อง MS Access / > การแยกข้อมูลภายในแถว
« เมื่อ: 14 มี.ค. 61 , 14:54:05 »
Import Excel เข้ามาก่อน เอาไปไว้ที่ตารางชั่วคราวที่เรากำหนด แล้วก็ Query ข้อมูลให้เป็นอย่างที่เราต้องการครับ

69
Private Sub Form_BeforeUpdate(Cancel As Integer)
  Me.[ฟิลด์รวมเงินสุทธิ] = ผลการคำนวณจาก textbox
End Sub

หรือจะใช้ event อื่นก็ได้ที่มีการปรับปรุงค่าของ ผลการคำนวณจาก textbox

70
ใช้ Option Group Control แทน check box ครับแล้ว bound ไปที่ Tx1 มันสามารถตั้งค่าได้ว่าให้ Option แต่ละตัวมีค่าเป็น 1 หรือ 2 แล้วตรง AfterUpdate Event ก็กำหนดให้

Private Sub Tx1_AfterUpdate()
 If Me.Tx1 = 1 then
   Me.Ch1 = True
   Me.Ch2 = False
 Else
   Me.Ch1 = False
   Me.Ch2 = True
 End If
End Sub

ปล. ว่าแต่จะเก็บค่า Ch1 กับ Ch2 ในตารางทำไม ถ้ามันสามารถหาค่าได้จาก Tx1 อยู่แล้ว

71
Query จะแสดงข้อมูล record จากตาราง SMBsuccessTable1 ออกมาทุก record ยกเว้นที่เป็นค่า null ใน 3 ฟิดล์ (ที่มีเงื่อนไขว่า Is Not Null ในภาพ) และจะแสดงข้อมูลในตาราง SMBsuccessOut ออกมาเฉพาะ record ที่มีฟิลด์ 4 ฟิลด์ที่ลูกศรชี้อยู่นั้นตรงกันกับข้อมูลฟิลด์ในตาราง SMBsuccessTable1 เท่านั้น เช่นเดียวกับตาราง SMBsuccessMain ที่จะแสดงข้อมูลเฉพาะ record ที่มีข้อมูลในฟิลด์ 5 ฟิลด์ตามลูกศรชี้ที่ตรงกันกับตาราง SMBsuccessTable1 เช่นกัน

72
If MsgBox("คุณต้องการบันทึกยอดขาย ใช่ หรือ ไม่", vbInformation + vbYesNo, "แจ้งเตือน") = vbYes Then
  If IsNull(DLookup("R_DATE", "Report_Sale", "[R_DATE] = " & CDbl(Me.Date_Re)) Then
   Docmd.RunSQL "INSERT INTO Report_Sale(R_DATE, R_PRICE, R_SALE,R_CARD,R_CREDIT,R_IN_CREDIT,R_GP) " & _
    "VALUES " & CDbl(Me.Date_Re) & ", " & Me.t01 & ", " & Me.t02 & ", " & Me.t03 & ", " & Me.t04 & ", " & Me.t05 & ", " & Me.t06
  Else
   Docmd.RunSQL "UPDATE Report_Sale SET R_Price = " & Me.t01 & ",R_SALE = " & Me.t02 & ", R_CARD = " & Me.t03 & ", R_CREDIT= " & Me.t04 & ", R_IN_CREDIT = " & Me.t05 & ", R_GP = " & Me.t06 & " WHERE R_DATE = " & CDbl(Me.Date_Re)
  End If
End If

ไม่ต้องแก้ format วันที่อะไรทั้งนั้น ย้ายเครื่องทำงานได้ทุกเครื่อง MS Access เก็บข้อมูลวันที่เป็นตัวเลขมาตราฐานเดียวทุกเครื่อง ให้มองวันนี้ในฐานข้อมูลเป็นตัวเลขแล้วอะไรจะง่ายขึ้น

หน้า: 1 2 3 [4] 5 6 7 8