กระทู้เก่าบอร์ด อ.Yeadram
967 1
URL.หัวข้อ /
URL
แปลง คอลัมน์เป็นแถว
ได้คำตอบมาจากเว็บไซต์ครับ
คำตอบนี้สำหรับแปลงคอลัมน์เป็นแถวครับ เอามาประยุกต์ได้ตรงทีเดียว
http://www.dbforums.com/showthread.php?1634393-Any-way-to-convert-columns-to-rows-See-inside-for-an-example
กรณีนี้มีเพียง 12 เดือน ผมจะเอามาประยุกต์กับจำนวนข้อสอบสอบสมมติมี 100 ข้อ โค้ดมันต้องยาว อยากได้คำตอบเพิ่มเติมครับ ว่าใช้ x แทนตัวแปรบรรทัดนี้
"rsmyrs("month_value") = 1" ให้มันวนลูบถึง rsmyrs("month_value") == 100 เลยครับ
Public Sub create_batch_month()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim rsmyrs As DAO.Recordset
Dim sqlcode As String
Set db = CurrentDb()
Set rst = db.OpenRecordset("tbl_batch")
Set rsmyrs = db.OpenRecordset("tbl_batch_month", dbOpenDynaset)
DoCmd.SetWarnings False
sqlcode = "DELETE tbl_batch_month.* FROM tbl_batch_month"
DoCmd.RunSQL sqlcode
DoCmd.SetWarnings True
With rst
If .RecordCount > 0 Then
.MoveLast
Do Until .BOF
' add Jan
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "Jan"
rsmyrs("batch_total") = ![mth_jan]
rsmyrs("month_value") = 1
rsmyrs.Update
' add Feb
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "Feb"
rsmyrs("batch_total") = ![mth_feb]
rsmyrs("month_value") = 2
rsmyrs.Update
' add Mar
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "Mar"
rsmyrs("batch_total") = ![mth_mar]
rsmyrs("month_value") = 3
rsmyrs.Update
' add Apr
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "Apr"
rsmyrs("batch_total") = ![mth_apr]
rsmyrs("month_value") = 4
rsmyrs.Update
' add May
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "May"
rsmyrs("batch_total") = ![mth_may]
rsmyrs("month_value") = 5
rsmyrs.Update
.MovePrevious
Loop ' looping to bof
End If
End With
End Sub
คำตอบนี้สำหรับแปลงคอลัมน์เป็นแถวครับ เอามาประยุกต์ได้ตรงทีเดียว
http://www.dbforums.com/showthread.php?1634393-Any-way-to-convert-columns-to-rows-See-inside-for-an-example
กรณีนี้มีเพียง 12 เดือน ผมจะเอามาประยุกต์กับจำนวนข้อสอบสอบสมมติมี 100 ข้อ โค้ดมันต้องยาว อยากได้คำตอบเพิ่มเติมครับ ว่าใช้ x แทนตัวแปรบรรทัดนี้
"rsmyrs("month_value") = 1" ให้มันวนลูบถึง rsmyrs("month_value") == 100 เลยครับ
Public Sub create_batch_month()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim rsmyrs As DAO.Recordset
Dim sqlcode As String
Set db = CurrentDb()
Set rst = db.OpenRecordset("tbl_batch")
Set rsmyrs = db.OpenRecordset("tbl_batch_month", dbOpenDynaset)
DoCmd.SetWarnings False
sqlcode = "DELETE tbl_batch_month.* FROM tbl_batch_month"
DoCmd.RunSQL sqlcode
DoCmd.SetWarnings True
With rst
If .RecordCount > 0 Then
.MoveLast
Do Until .BOF
' add Jan
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "Jan"
rsmyrs("batch_total") = ![mth_jan]
rsmyrs("month_value") = 1
rsmyrs.Update
' add Feb
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "Feb"
rsmyrs("batch_total") = ![mth_feb]
rsmyrs("month_value") = 2
rsmyrs.Update
' add Mar
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "Mar"
rsmyrs("batch_total") = ![mth_mar]
rsmyrs("month_value") = 3
rsmyrs.Update
' add Apr
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "Apr"
rsmyrs("batch_total") = ![mth_apr]
rsmyrs("month_value") = 4
rsmyrs.Update
' add May
rsmyrs.AddNew
rsmyrs("batch_code") = ![batch_code]
rsmyrs("batch_month") = "May"
rsmyrs("batch_total") = ![mth_may]
rsmyrs("month_value") = 5
rsmyrs.Update
.MovePrevious
Loop ' looping to bof
End If
End With
End Sub
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
Time: 0.3990s
With rst
If .RecordCount > 0 Then
.MoveLast
Do Until .BOF
For L = 1 To 100
rsmyrs.AddNew
rsmyrs("...") = ....
....
....
....
rsmyrs("month_value") = L
rsmyrs.Update
Next L
.MovePrevious
Loop ' looping to bof
End If
End With [/FONT]