 |
|
|
 |
 |
|
ผมไปเพิ่งไปนั่งคิด นั่งเขียนมาให้ครับ เห็นว่ามันเป็นโจทก์ที่น่าสนุก น่าคิดดี
แต่จากคำถามนี่ ทำให้ย้อนถามได้ครับว่า ใน 2-3 ฟิลด์(คอลัมภ์) ที่อยากได้น่ะถามว่าจะเอาฟิลด์ลำดับเดียวกันหรือเปล่าในทุกๆ เรคคอร์ด หรือจะเอาอิสระจากกัน
ยกตัวอย่าง "ไม่เรียงลำดับเรคคอร์ด ไม่เรียงลำดับฟิลด์ แต่...ได้ฟิลด์เดียวกัน ในทุกๆ เรคคอร์ด" คุณจะได้ข้อมูลอย่างนี้เป็นต้น
เรคคอร์ดที่ 7 จะได้ฟิลด์ ที่ 4 , 3 ,6
เรคคอร์ดที่ 3 จะได้ฟิลด์ ที่ 4 , 3 ,6
เรคคอร์ดที่ 11 จะได้ฟิลด์ ที่ 4 , 3 ,6
ยกตัวอย่าง "ไม่เรียงลำดับเรคคอร์ด ไม่เรียงลำดับฟิลด์ แต่ละเรคคอร์ดได้ฟิลด์ไม่เหมือนกัน" คุณจะได้ข้อมูลอย่างนี้เป็นต้น
เรคคอร์ดที่ 2 จะได้ฟิลด์ ที่ 1 , 3 ,6
เรคคอร์ดที่ 1 จะได้ฟิลด์ ที่ 2 , 6 ,1
เรคคอร์ดที่ 10 จะได้ฟิลด์ ที่ 1 , 5 ,4
อันนี้เป็นที่ผมไปเขียนมา เป็นไปตามตัวอย่างที่สองนะครับ ไปดัดแปลงเอา
- ตารางที่จะให้มันสุ่ม ต้อง ! มีเรคคอร์ดมากว่า 3 เรคคอร์ด และ ต้อง ! มีฟิลด์มากกว่า 3 ฟิลด์
- รายละเอียดของตาราง และการเชื่อมต่อ เอาไปใส่เอาเองครับ
- มันจะคืนคำตอบ มาที่ตัวแปร strAns นะครับ ดูบรรทัดสุดท้ายเลย ถ้าต้องการเอาคำตอบที่ได้ไปดัดแปลงแสดงผลเป็นอย่างอื่น ก็ตามไล่ โค้ด เอา ตามบรรทัดที่มีคำว่า strAns ได้เลยครับ
Dim strAns
Dim rndRec
Dim rndFld
Dim CntRec
Dim CntFld
Dim arRec()
Dim arFld()
Dim x, y
rndRec = (Rnd \ 1) + 2
rndFld = (Rnd \ 1) + 2
ReDim arRec(rndRec)
ReDim arFld(rndFld)
'*********************** คุณต้องให้ค่าเหล่านี้ *******************************
' Dim rs......................
' Dim Conn.......................
Dim sql
' sql = "Select * From " & [ชื่อตาราง]
' Rs.Open sql, .............................
'*******************************************************************************
Rs.MoveLast
CntFld = Rs.Fields.COUNT - 1
CntRec = Rs.RecordCount - 1
For x = 1 To rndRec
arRec(x - 1) = CntRec * Rnd \ 1
For y = 0 To x
If arRec(x - 1) = arRec(y) Then arRec(x - 1) = CntRec * Rnd \ 1
Next
Next
For x = 1 To rndFld
arFld(x - 1) = CntFld * Rnd \ 1
For y = 0 To x
If arFld(x - 1) = arFld(y) Then arFld(x - 1) = CntFld * Rnd \ 1
Next
Next
strAns = ""
For x = 0 To rndRec - 1
Rs.MoveFirst
Do While Not Rs.EOF
If Rs.AbsolutePosition = arRec(x) Then
strAns = strAns & "Record No : " & Rs.AbsolutePosition & vbCrLf
For y = 0 To rndFld - 1
strAns = strAns & " Field No : " & arFld(y) & " Field Name : " & Rs(arFld(y)).NAME & " Field Value : " & Rs(arFld(y)) & vbCrLf
Next
End If
Rs.MoveNext
Loop
Next
Rs.CLOSE
response.write strAns
|
 |
 |
 |
 |
Date :
24 พ.ย. 2550 17:12:11 |
By :
GTM |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|