0% found this document useful (0 votes)
24 views

VBA

VBA sample

Uploaded by

trung.iem.iu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views

VBA

VBA sample

Uploaded by

trung.iem.iu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 9

Option Compare Database

Private Sub Command0_Click()

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSql As String
Dim strResult As String

Set db = CurrentDb

strSql = "SELECT tbl_Input.[MBS No], [Container number], tbl_Input.Item,


REPLACE(tbl_Input.Material, ' ', '') AS Material, " & _
"tbl_Input.[Material Description], tbl_Input.[Order qty] " & _
"FROM [tbl_Input] LEFT JOIN Query_Master ON (tbl_Input.[MBS No] =
Query_Master.[MBS No]) " & _
"AND (tbl_Input.[Item] = Query_Master.[Item]) " & _
"AND (REPLACE(tbl_Input.[Material], ' ', '') = REPLACE(Query_Master.
[Material], ' ', '')) " & _
"AND (tbl_Input.[Material Description] = Query_Master.[Material
Description]) " & _
"AND (tbl_Input.[Order qty] = Query_Master.[OrderQty]) " & _
"WHERE (Query_Master.[MBS No] IS NULL OR Query_Master.Item IS NULL OR
Query_Master.Material IS NULL OR " & _
"Query_Master.[Material Description] IS NULL OR Query_Master.[OrderQty] IS
NULL) " & _
"OR (Nz(tbl_Input.[MBS No], '') <> Nz(Query_Master.[MBS No], '')) " & _
"OR (Nz(tbl_Input.[Item], '') <> Nz(Query_Master.Item, '')) " & _
"OR (Nz(REPLACE(tbl_Input.[Material],' ',''), '') <>
Nz(REPLACE(Query_Master.[Material],' ',''), '')) " & _
"OR (Nz(tbl_Input.[Material Description], '') <> Nz(Query_Master.[Material
Description], '')) " & _
"OR (Nz(tbl_Input.[Order qty], '') <> Nz(Query_Master.[OrderQty], '')) " &
_
"ORDER BY tbl_Input.Invoice;"

Set rs = db.OpenRecordset(strSql, dbOpenSnapshot)

If rs.EOF Then
Me.Text1.Value = "Invoice is valid"
If Me.Text1.Value = "Invoice is valid" Then
Me.subForm8Control.Requery
End If
Else
rs.MoveFirst
End If
Dim rowIndex As Integer
rowIndex = 0
Do Until rs.EOF
rowIndex = rowIndex + 1
' Ki?m tra t?ng tru?ng và xây d?ng thông báo "mismatch" tuong ?ng
Dim mismatchFields As String
mismatchFields = ""
If IsNull(DLookup("[MBS No]", "Query_Master", "[MBS No] = '" &
rs.Fields("MBS No").Value & "'")) Then
mismatchFields = mismatchFields & "MBS No, "
End If
If IsNull(DLookup("[Container]", "Query_Master", "[Container] = '" &
rs.Fields("Container number").Value & "'")) Then
mismatchFields = mismatchFields & "Container number, "
End If

If IsNull(DLookup("[Material]", "Query_Master", "[MBS No] = '" &


rs.Fields("MBS No").Value & "' AND [Material Description] = '" &
rs.Fields("Material Description").Value & "' AND [Material] = '" &
rs.Fields("Material").Value & "'")) Then
mismatchFields = mismatchFields & "Material, "
End If

If IsNull(DLookup("[Material Description]", "Query_Master", "[Material


Description] = '" & rs.Fields("Material Description").Value & "'")) Then
mismatchFields = mismatchFields & "Material Description, "
End If

If Not IsNull(DLookup("[OrderQty]", "Query_Master", "[MBS No] = '" &


rs.Fields("MBS No").Value & "' AND [Item] = '" & rs.Fields("Item").Value & "' AND
[OrderQty]='" & rs.Fields("Order qty").Value & "'")) Then
Else

mismatchFields = mismatchFields & "Order qty, "


End If

' Lo?i b? d?u ph?y cu?i cùng và kho?ng tr?ng


If Len(mismatchFields) > 0 Then
mismatchFields = Left(mismatchFields, Len(mismatchFields) - 2)
End If
' Gán giá tr? c?a mismatchFields vào ô van b?n tuong ?ng trên hàng hi?n t?i
Me.Text1.Value = "Invoice need to be checked.Mismatch fields: " &
mismatchFields
Me.Text1.FontBold = True
rs.MoveNext
Loop
If Me.Text1.Value = "Invoice need to be checked.Mismatch fields: " &
mismatchFields Then
End If
rs.Close
Set rs = Nothing
End Sub
Private Sub Command35_Click()
Dim strSql As String
strSql = "SELECT Invoice, [Container number], [MBS No],tbl_RRRR.[Date],
tbl_RRRR.ID, Material, [Material Description], tbl_RRRR.ColorCode, ClaimQty, [NCP
date], STATUS, Model2, Lot, PM2, Box,FORMAT(Date(), 'dd-mm-yyyy') As Receiving,
tbl_dulieuROB.Remark, [Child part], Nz(NULL,'') AS Delivery, Nz(NULL,'') AS [Note]
" & _
"INTO tbl_TESTING2 " & _
"FROM tbl_RRRR " & _
"LEFT JOIN tbl_dulieuROB ON tbl_RRRR.ID = tbl_dulieuROB.ID WHERE tbl_RRRR.
[Date] = Date() "
DoCmd.RunSQL strSql
DoCmd.OpenForm "Form7"
End Sub

Private Sub Command36_Click()


DoCmd.OpenForm "Form8"
DoCmd.Maximize
End Sub
Private Sub Command4_Click()
Dim fd As Object
Dim SQL1 As String
SQL1 = "DELETE * FROM tbl_Input"
DoCmd.RunSQL SQL1
Set fd = Application.FileDialog(1) ' 1 = msoFileDialogOpen
fd.AllowMultiSelect = False
fd.Filters.Clear
fd.Filters.Add "Excel Files", "*.xls;*.xlsx"
If fd.Show Then
strFile = fd.SelectedItems(1)
Else
' User clicked Cancel
End If
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "tbl_Input",
strFile, True
MsgBox "Completely imported", vbInformation, "Thông báo"
Dim sql As String
sql = "INSERT INTO tbl_Invoice ( INVOICE, [MBS NO], [Container number],[Date] )
SELECT DISTINCT TBL.INVOICE, TBL.[MBS NO], TBL.[Container number],Date() " & _
"FROM tbl_Input AS TBL;"

DoCmd.RunSQL sql
sql = "INSERT INTO tbl_ChartInvoice ( INVOICE, [MBS NO], [Container number],
[Date] ) SELECT DISTINCT TBL.INVOICE, TBL.[MBS NO], TBL.[Container number],Date() "
& _
"FROM tbl_Input AS TBL;"
DoCmd.RunSQL sql
Me.subForm8Control.Requery
Me.subForm7Control.SourceObject = ""
Dim strSql As String
strSql = "INSERT INTO tbl_RRRR " & _
"SELECT * FROM ( " & _
"SELECT tbl_NEW2.*, " & _
"IIF(tbl_NEW2.ID IS NULL, " & _
"IIF(DLOOKUP(""ID"",""Query_NCPMODIFIED"",""[ESAM No#] = '"" & tbl_NEW2.[PO
Number] & ""' "") IS NULL, 'ESAM Not Found In NCP Database', " & _
"IIF(DLOOKUP(""ID"",""Query_NCPMODIFIED"",""[ESAM No#] = '"" & tbl_NEW2.[PO
Number] & ""' AND LEFT(REPLACE(PARTNUMBER, ' ', ''), 11) = '"" &
LEFT(tbl_NEW2.Material, 11) & ""' "") IS NULL,'Wrong Or Change Part Number'))) AS
Remark " & _
"FROM (SELECT tbl_NEW.Invoice, tbl_NEW.[MBS No], tbl_NEW.[Container number],
[Date],tbl_NEW.Item, tbl_NEW.[PO Number], tbl_NEW.Material, tbl_NEW.[Material
Description], ColorCode, tbl_NEW.Qty, Query_NCPMODIFIED.Quantity AS ClaimQty,
Query_NCPMODIFIED.NCPDate, Query_NCPMODIFIED.[Small part number], tbl_NEW.PHANLOAI,
Query_NCPMODIFIED.ID " & _
"FROM (SELECT * FROM Query_EX33) AS tbl_NEW " & _
"LEFT JOIN Query_NCPMODIFIED ON (LEFT(REPLACE(tbl_NEW.Material, ' ', ''), 11)
= LEFT(Query_NCPMODIFIED.PARTNUMBER, 11)) AND (tbl_NEW.[PO Number] =
Query_NCPMODIFIED.[ESAM No#]) " & _
"ORDER BY tbl_NEW.[MBS No] ASC, tbl_NEW.Item ASC " & _
") AS tbl_NEW2 " & _
") AS subquery_alias;"
DoCmd.RunSQL strSql
Me.subForm7Control.SourceObject = "subForm7"
End Sub
Private Sub Command40_Click()
Dim db1 As DAO.Database
Set db1 = CurrentDb

Dim strTableName1 As String


strTableName1 = "tbl_Invoice"
Dim rs1 As DAO.Recordset
Set rs1 = db1.OpenRecordset(strTableName1)

Dim strTableName2 As String


strTableName2 = "tbl_dulieuEX33"
Dim rs2 As DAO.Recordset
Set rs2 = db1.OpenRecordset(strTableName2)

Dim foundRecord As Boolean


foundRecord = False

rs1.MoveFirst
Do Until rs1.EOF
foundRecord = False
If rs2.EOF And rs2.BOF Then
Set rs2 = db1.OpenRecordset(strTableName2, dbOpenDynaset)
Else
rs2.MoveFirst
End If
Do Until rs2.EOF
If rs2("Invoice") = rs1("Invoice") And rs2("MBS No") = rs1("MBS No")
Then
foundRecord = True
rs2.Edit
rs2("Receiver") = rs1("Receiver")
rs2("Remark") = rs1("Remark")
If rs1("Return") = True Then
rs2("Action") = "Return"
ElseIf rs1("Storage") = True Then
rs2("Action") = "Storage"
ElseIf rs1("Delivery") = True Then
rs2("Action") = "Delivery"
End If
rs2.Update
Exit Do
End If
rs2.MoveNext
Loop

If Not foundRecord Then


rs2.AddNew
rs2("Invoice") = rs1("Invoice")
rs2("MBS No") = rs1("MBS No")
rs2("Container number") = rs1("Container number")
rs2("Receiving date") = Date$
rs2("Receiver") = rs1("Receiver")
rs2("Remark") = rs1("Remark")
If rs1("Return") = True Then
rs2("Action") = "Return"
ElseIf rs1("Storage") = True Then
rs2("Action") = "Storage"
ElseIf rs1("Delivery") = True Then
rs2("Action") = "Delivery"
End If
rs2.Update
End If

rs1.MoveNext
Loop

rs2.Close
rs1.Close
db1.Close

Set rs2 = Nothing


Set rs1 = Nothing
Set db1 = Nothing
MsgBox "Complete"
End Sub

Private Sub Command41_Click()


DoCmd.OpenTable "tbl_dulieuEX33"
End Sub

Private Sub subForm8Control_Enter()

End Sub
____________________________________________________________________
Option Compare Database

Private Sub Command10_Click()


Dim db As DAO.Database
Dim rst As DAO.Recordset

Set db = CurrentDb
Set rst = db.OpenRecordset("tbl_Invoice")
rst.MoveFirst
Do While Not rst.EOF
With rst
.Edit
If Not IsNull(!Materials) Then
!Materials = Not !Materials
Else
!Materials = True
End If
.Update
End With
rst.MoveNext
Loop

Me.subForm8Control.Requery

End Sub

Private Sub Command3_Click()


Dim strMBSNo As String
strMBSNo = Me.Text1.Value
Me.subForm8Control.Form.Filter = "[MBS No] = '" & strMBSNo & "' OR [Container
number] = '" & strMBSNo & "'"
Me.subForm8Control.Form.FilterOn = True
End Sub

Private Sub Command5_Click()


Dim db1 As DAO.Database
Set db1 = CurrentDb

Dim strTableName1 As String


strTableName1 = "tbl_Invoice"
Dim rs1 As DAO.Recordset
Set rs1 = db1.OpenRecordset(strTableName1)

Dim strTableName2 As String


strTableName2 = "tbl_dulieuEX33"
Dim rs2 As DAO.Recordset
Set rs2 = db1.OpenRecordset(strTableName2)
Dim arrMBSNo() As Variant
Dim i As Long
i = 0

Dim rsFilter As DAO.Recordset


Dim strSql As String

' L?y danh sách các MBS No t? subForm8Control có tru?ng Status là True
strSql = "SELECT [MBS No] FROM tbl_Invoice WHERE Status=True"
Set rsFilter = db1.OpenRecordset(strSql)

' Duy?t qua t?ng MBS No và l?y d? li?u tuong ?ng t? tbl_RRRR
rsFilter.MoveFirst
Do Until rsFilter.EOF
strSql = "SELECT tbl_RRRR.Invoice, tbl_RRRR.[MBS No], tbl_RRRR.[Container
number],tbl_Invoice.[Date], tbl_RRRR.Material, tbl_RRRR.[Material Description],
tbl_RRRR.Qty, tbl_RRRR.ID, tbl_INVOICE.Delivery, tbl_RRRR.Remark, tbl_RRRR.Action "
& _
"FROM tbl_RRRR LEFT JOIN tbl_INVOICE ON tbl_RRRR.[MBS No] = tbl_INVOICE.
[MBS No] WHERE tbl_RRRR.[MBS No]='" & rsFilter("MBS No") & "'"
Dim rsRRRR As DAO.Recordset
Set rsRRRR = db1.OpenRecordset(strSql)

' Ki?m tra d? li?u trong rsRRRR d? th?c hi?n chuy?n d? li?u vào
tbl_dulieuEX33
If Not rsRRRR.EOF Then
rsRRRR.MoveFirst
Do Until rsRRRR.EOF
rs2.AddNew
rs2("Invoice") = rsRRRR("Invoice")
rs2("MBS No") = rsRRRR("MBS No")
rs2("Container number") = rsRRRR("Container number")
rs2("Material") = rsRRRR("Material")
rs2("Material Description") = rsRRRR("Material Description")
rs2("Qty") = rsRRRR("Qty")
rs2("ID") = rsRRRR("ID")
rs2("Receiving date") = rsRRRR("Date")
rs2("Date") = Date$
rs2("Receiver") = rsRRRR("Delivery")
rs2("Remark") = rsRRRR("Remark")
If rsRRRR!Action = True Then
rs2("Status") = "Done"
ElseIf rsRRRR!Action = False Then
rs2("Status") = "Not Done"
End If
rs2.Update
ReDim Preserve arrMBSNo(i)
arrMBSNo(i) = rsRRRR("MBS No")
i = i + 1
rsRRRR.MoveNext
Loop
End If
For i = LBound(arrMBSNo) To UBound(arrMBSNo)
strSql = "DELETE * FROM tbl_RRRR WHERE [MBS No]='" & arrMBSNo(i) & "'"
db1.Execute strSql
Next i
rsFilter.MoveNext
Loop
rsFilter.Close
rs2.Close
rs1.Close
db1.Close

Set rsFilter = Nothing


Set rs2 = Nothing
Set rs1 = Nothing
Set db1 = Nothing

Dim subform As Form


Dim db As DAO.Database
Dim otherTable As DAO.Recordset
Dim selectedRow As DAO.Recordset

Set subform = Me.Controls("subForm8Control").Form

Set db = CurrentDb
Set otherTable = db.OpenRecordset("tbl_InvoiceDone")

Set selectedRow = db.OpenRecordset("tbl_Invoice")


selectedRow.MoveFirst

Do Until selectedRow.EOF
If selectedRow!Status = True Then

otherTable.AddNew
For Each fld In selectedRow.Fields
otherTable.Fields("Invoice").Value =
selectedRow.Fields("Invoice").Value
otherTable.Fields("MBS No").Value = selectedRow.Fields("MBS
No").Value
otherTable.Fields("Container number").Value =
selectedRow.Fields("Container number").Value
otherTable.Fields("Date").Value = Date
Next fld
otherTable.Update

selectedRow.Delete
End If
selectedRow.MoveNext
Loop
subform.Form.Requery
Me.subForm11.Requery

selectedRow.Close
otherTable.Close

Set selectedRow = Nothing


Set otherTable = Nothing
Set db = Nothing

MsgBox "Done!", vbInformation


End Sub

Private Sub Command8_Click()


DoCmd.OpenForm "Form9"
End Sub

Private Sub Command9_Click()


Dim db1 As DAO.Database
Set db1 = CurrentDb

Dim strTableName1 As String


strTableName1 = "tbl_Invoice"
Dim rs1 As DAO.Recordset
Set rs1 = db1.OpenRecordset(strTableName1)

Dim strTableName2 As String


strTableName2 = "tbl_dulieuEX33"
Dim rs2 As DAO.Recordset
Set rs2 = db1.OpenRecordset(strTableName2)

Dim rsFilter As DAO.Recordset


Dim strSql As String

' L?y danh sách các MBS No t? subForm8Control có tru?ng Status là True
strSql = "SELECT [MBS No] FROM tbl_Invoice WHERE Status=True"
Set rsFilter = db1.OpenRecordset(strSql)

' Duy?t qua t?ng MBS No và l?y d? li?u tuong ?ng t? tbl_RRRR
rsFilter.MoveFirst
Do Until rsFilter.EOF
strSql = "SELECT tbl_RRRR.Invoice, tbl_RRRR.[MBS No], tbl_RRRR.[Container
number],tbl_Invoice.Date, tbl_RRRR.Material, tbl_RRRR.[Material Description],
tbl_RRRR.Qty,tbl_RRRR.ID,tbl_INVOICE.Delivery,tbl_RRRR.Remark ,tbl_RRRR.Action" & _
"FROM tbl_RRRR LEFT JOIN tbl_INVOICE ON tbl_RRRR.[MBS
No]=tbl_INVOICE.[MBS No] WHERE tbl_RRRR.[MBS No]='" & rsFilter("MBS No") & "'"
Dim rsRRRR As DAO.Recordset
Set rsRRRR = db1.OpenRecordset(strSql)

' Ki?m tra d? li?u trong rsRRRR d? th?c hi?n chuy?n d? li?u vào
tbl_dulieuEX33
If Not rsRRRR.EOF Then
rsRRRR.MoveFirst
Do Until rsRRRR.EOF
rs2.AddNew
rs2("Invoice") = rsRRRR("Invoice")
rs2("MBS No") = rsRRRR("MBS No")
rs2("Container number") = rsRRRR("Container number")
rs2("Material") = rsRRRR("Material")
rs2("Material Description") = rsRRRR("Material Description")
rs2("Qty") = rsRRRR("Qty")
rs2("ID") = rsRRRR("ID")
rs2("Receiving date") = rsRRRR("Date")
rs2("[Date]") = Date$
rs2("Receiver") = rsRRRR("Delivery")
rs2("Remark") = rsRRRR("Remark")
If rsRRRR!Action = True Then
rs2("Status") = "Done"
rs2.Update
rsRRRR.MoveNext
Loop
End If

rsFilter.MoveNext
Loop

rsFilter.Close
rs2.Close
rs1.Close
db1.Close

Set rsFilter = Nothing


Set rs2 = Nothing
Set rs1 = Nothing
Set db1 = Nothing
MsgBox "Complete"
End Sub

Private Sub Detail_DblClick(Cancel As Integer)

End Sub

You might also like