รบกวนอีกอย่างนะครับ
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 292   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 
 
จะต้องทำอย่างไรครับ

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
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0894s