1
ห้อง MS Access / : ตัด 0 นำหน้า รหัสพนักงานใน MS Access
« เมื่อ: 24 ก.พ. 65 , 16:30:30 »
เปลี่ยน Data Type จาก Text เป็น Integer ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: apirak
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.
น่าสนใจมากเลยค่ะอาจารย์
ขออนุญาตคุณ001jetnipitด้วยนะคะ
รบกวนอาจารย์ OddyWriter ขอไฟล์ตัวอย่างแบบ 32 bit ด้วยได้ไหมคะ
หนูจะเอาไปปลุกผีงานเก่าที่เคยถอดใจล้มเลิกไปแล้วค่ะ
แต่หนูลองเอาไฟล์ตัวอย่าง64bit ของอาจารย์ไปรันกับ 32bit มันก็ทำงานได้ปกตินะคะ
ไม่ทราบว่าจริงๆแล้วจะมีผลแตกต่างอื่นๆหรือเปล่าคะ
Public Sub ExplodeTable()
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim LastID As Variant
Dim I As Integer
Set DB = CurrentDb
Set RS = DB.OpenRecordset("SELECT MakeQryOT.MemID, MakeQryOT.sOT FROM MakeQryOT ORDER BY MakeQryOT.MemID;")
Do Until RS.EOF
If RS!MemID <> LastID Then
I = 1
DB.Execute "insert into tblOT_Report (MemID, OT1) values (" & CStr(RS!MemID) & ", " & CStr(RS!sOT) & ")", dbFailOnError
Else
I = I + 1
DB.Execute "update tblOT_Report set OT" & CStr(I) & " = '" & CStr(RS!sOT) & "' where MemID = '" & CStr(RS!MemID) & "'", dbFailOnError
End If
LastID = RS!MemID
RS.MoveNext
Loop
RS.Close: Set RS = Nothing
End Sub
ใช้คำสั่ง SQL ล้วนๆคงไม่ได้ ต้องใช้ VBA ด้วย โค้ดนี้ต้องปรับแก้ให้ใส่ ' ' คร่อม ถ้า data type ของ ID, Num, Fieldxx เป็น Text ด้วยนะครับ
Public Sub xxx()
Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim LastID As Variant
Dim I As Integer
Set DB = CurrentDb
Set RS = DB.OpenRecordset("select * from Table1 (order by ..., ถ้ามี)")
Do Until RS.EOF
If RS!ID <> LastID Then
I = 1
DB.Execute "insert into Table2 (ID, Field1) values (" & CStr(RS!ID) & ", " & CStr(RS!Num) & ")", dbFailOnError
Else
I = I + 1
DB.Execute "update Table2 set Field" & CStr(I) & " = " & CStr(RS!Num) & " where ID = " & CStr(RS!ID), dbFailOnError
End If
LastID = RS!ID
RS.MoveNext
Loop
RS.Close: Set RS = Nothing
End Sub