กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
359 8
URL.หัวข้อ /
URL
รบกวนอีกอย่างนะครับ
ผมได้สร้างตารางไว้ ชื่อ Ttax ครับ มีข้อมูลดังนี้
ID Date DocumentNo
001 08/07/2545 000
002 01/07/2545 000
003 31/07/2545 000
004 07/07/2545 000
แล้วนำมาสร้าง Query โดยจัดเรียงตามวันที่ ชื่อ Qtax
ID Date DocumentNo
002 01/07/2545 000
004 07/07/2545 000
001 08/07/2545 000
003 31/07/2545 000
ความต้องการของผมคือ
อยากจะให้ใส่ตัวเลข ที่ DocumentNo ตั้งแต่ 1 ไปเลื่อยๆ โดยให้เรียงตามวันที่(Qtax)
ผลลัพท์ที่อยากได้
ID Date DocumentNo
002 01/07/2545 001
004 07/07/2545 002
001 08/07/2545 003
003 31/07/2545 004
จะต้องทำอย่างไรครับ
ID Date DocumentNo
001 08/07/2545 000
002 01/07/2545 000
003 31/07/2545 000
004 07/07/2545 000
แล้วนำมาสร้าง Query โดยจัดเรียงตามวันที่ ชื่อ Qtax
ID Date DocumentNo
002 01/07/2545 000
004 07/07/2545 000
001 08/07/2545 000
003 31/07/2545 000
ความต้องการของผมคือ
อยากจะให้ใส่ตัวเลข ที่ DocumentNo ตั้งแต่ 1 ไปเลื่อยๆ โดยให้เรียงตามวันที่(Qtax)
ผลลัพท์ที่อยากได้
ID Date DocumentNo
002 01/07/2545 001
004 07/07/2545 002
001 08/07/2545 003
003 31/07/2545 004
จะต้องทำอย่างไรครับ
8 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R00531
ให้โค้ดนี่ครับ
Sub AddOrder()
Dim dbs As Database, rst As Recordset
Dim I As Integer
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("QTax")
If Not rst.EOF Then
For I = 1 To rst.RecordCount
rst.Edit
rst("DocumentNo") = Format(I, "000")
rst.Update
rst.MoveNext
Next I
End If
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
End Sub
2 @R00533
ผมทดลองทำแล้วครับ มีแมสแสชขึ้นว่า
Too few parameters. Expected2.
แล้ว error ที่ Code บรรทัด
Set rst = dbs.OpenRecordset("QTax")
3 @R00534
ตรงนี้จะหมายถึง QTax เป็น parametered ให้เอาส่วนนี้ออก โดยไปที่เมนู Query>Parameters... แล้วเอาค่าที่ใส่ไว้ออกครับ
ไม่ทราบว่าได้ใส่อะไรในส่วนของ parameters ไว้หรือเปล่า?
หรือจะใช้นี่แทนก็ได้ครับ
...
Set rst = dbs.OpenRecordset("Select Date From ชื่อตารางเป้าหมายของคุร Order By Date;")
...
ลองดูครับ
4 @R00539
มันจะต้องใช้ Parameters ครับ
เพราะว่าต้องการจะ Update ข้อมูลเฉพาะ ที่ SubID ลิงค์ กับ ID ของ Main Form
5 @R00540
ให้เอา SQL ของ QTax Query มาดูหน่อยครับ ผมจะได้แปลงโค้ดให้ตรงกับความต้องการ คืออยากรู้ว่าใช้ Parameter กับฟีลด์ไหนครับ
6 @R00541
ลองเปลี่ยนเป็นแบบนี้ดูครับ
Sub AddOrder()
Dim dbs As Database, rst As Recordset, qdf As QueryDef
Dim I As Integer
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("QTax")
qdf.Parameters!MyDate = #8/7/2545#
Set rst = qdf.OpenRecordset
If Not rst.EOF Then
For I = 1 To rst.RecordCount
rst.Edit
rst("DocumentNo") = Format(I, "000")
rst.Update
rst.MoveNext
Next I
End If
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
End Sub
โดยผมเดาเอาว่า SQL ของ QTax กรองวันที่ในฟีลด์ Date ดังนี้
PARAMETERS MyDate DateTime;
SELECT Moo.ID, Moo.Date, Moo.DocumentNo
FROM Moo
WHERE (((Moo.Date)<[MyDate]))
ORDER BY Moo.Date;
7 @R00545
SELECT TTax.AutoID, TTax.Date, TTax.BookNo, TTax.DocumentNo, TTax.Discription, TTax.Price, TTax.Amount, TTax.ID
FROM MonthTax INNER JOIN TTax ON MonthTax.ID = TTax.ID
ORDER BY TTax.Date;
8 @R00549
ลองเปลี่ยนเป็นโค้ดข้างล่างดูครับ
Sub AddOrder()
Dim dbs As Database, rst As Recordset
Dim I As Integer, strSQL As String
Set dbs = CurrentDb
strSQL = "SELECT TTax.AutoID, TTax.Date, TTax.BookNo, " _
& "TTax.DocumentNo, TTax.Discription, TTax.Price, TTax.Amount, " _
& "TTax.ID " _
& "FROM MonthTax INNER JOIN TTax ON MonthTax.ID = TTax.ID " _
& "ORDER BY TTax.Date;"
Set rst = dbs.OpenRecordset(strSQL)
If Not rst.EOF Then
For I = 1 To rst.RecordCount
rst.Edit
rst("DocumentNo") = Format(I, "000")
rst.Update
rst.MoveNext
Next I
End If
rst.Close
dbs.Close
Set rst = Nothing
Set dbs = Nothing
End Sub
Time: 0.1180s