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

 273   4
URL.หัวข้อ / URL
คำสั่งรันวันที่แบบนี้ กรอกกำกับตรงไหนใน Access97 ครับ




มีปัญหาเกี่ยวกับการรันวันที่อัตโนมัติ

ได้ search ดูกระทู้เก่าๆแล้ว

พบว่าอาจารย์แนะนำให้ใช้คำสั่งนี้คือ

...............................................

=DateAdd("m", 1, [วันเดือนปีเริ่มต้น])

...........................................

แต่ไม่ได้ให้รายละเอียดเพิ่มเติมว่าต้องไปใส่กำกับที่ใด

ใน Access97 ลองพยายามใส่ใน format แล้ว ก็ไม่เวิร์คครับ

หรือต้องใส่ตรงไหน อย่างไร ????

..... ขอคำแนะนำ/ตัวอย่างด้วย ขอบคุณครับ



4 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R04282
คงต้องมาดูว่าต้องการให้เพิ่มข้อมูลในฟีลด์วันที่ในตาราง โดยให้เพิ่มจากวันที่ล่าสุดที่มีอยู่ ให้เป็นวันถัดไป ใช่หรือไม่ครับ

คงต้องใช้ DMax ช่วยด้วย

=DMax([ฟีลด์วันที่],"ชื่อตารางเป้าหมาย")

จะได้วันที่ล่าสุดออกมา จากนั้นก็ใช้ DateAdd() ช่วย

=DateAdd("d", 1, วันที่ล่าสุดที่ได้จากข้างบน)

ลองใช้กับเหตุการณ์ On Double Click ของฟีลด์ที่เก็บวันที่ในฟอร์มดูครับ

ถ้าสมมติว่า Text Box ชื่อ txtDate ก็ลอง

Private Sub txtDate_DblClick(Cancel As Integer)
Dim dteMax As Date
If Not IsNull(Me.txtDate) Or Me.txtDate <> "" Then
dteMax = DMax([ฟีลด์วันที่],"ชื่อตารางเป้าหมาย")
dteMax = DateAdd("d", 1, dteMax)
Me.txtDate = dteMax
End If
End Sub

(ถ้ายังไม่ได้อีก ก็ลอง D4D() นะครับ 5555)

2 @R04283


ชักจะท้อ+อ่อนใจแล้วครับอาจารย์

ผมคิดช้าสมองตื้อจริงๆครับ ....

...แต่ทำตามไม่ได้ผลจริงๆ คาดว่าผมพื้นฐานเรื่องนี้อ่อนมาก

.................................

ขอเริ่มปัญหาใหม่ก็แล้วกันนะครับ

ขอความกรุณาอาจารย์อธิบายแบบ simplify ที่สุดครับ

..............................

ปัญหาคือใน tblMain มีฟิลด์ที่เป็น primary key ชื่อ date

.....เป็นชนิด date/time ที่ฟอร์แมทเป็น ddดดดดbbbb

แต่ละวันจะกรอก ระเบียนเดียวเท่านั้น ต้องกรอกทุกวัน

ส่วนฟิลด์อื่นๆก็เป็นหางเครื่องยาวเหยียดไม่สำคัญนัก

ปัญหาก็คือในการ..ป้อน..ข้อมูล วันต่อไป

ประสงค์จะให้ date ขึ้นอัตโนมัติ แบบเดียวกับ autoNumber

ผู้ป้อนจะได้เริ่ม..คลิ๊ก...ป้อนข้อมูลเข้าฟิลด์หางเครื่องอื่นๆไปเลย

โดยไม่ต้องยุ่งกับฟิลด์ date ที่เป็น primary key นี้ ครับ

................................

ถ้า อจ.จะให้ code ในลักษณะ onClick บน frmMain ก็ได้ครับ

แต่ก็สงสัยว่าถ้าผู้ป้อนเผลอคลิ๊กไปที่วันก่อนหน้านั้น จะ error หรือไม่

......................

ขอชี้แนะทางออกด้วย และ ขอ code/คำแนะนำที่กระจ่างด้วยครับ


3 @R04288
ขออภัยครับ ผมให้โค้ดผิดไป

ลองแแบบนี้ครับ

สมมติว่าฟีลด์เป้าหมายคือ MyDate ในตารางชื่อ Table2

เมื่อสร้างฟอร์มขึ้นมา เราสามารถกำหนดให้ Tab Stop ของฟีลด์ที่เก็บค่าวันที่เป็น No เมื่อเปิดฟอร์มเข้ามา แล้วคลิกไปยังข้อมูลใหม่ มันจะใส่วันที่วันต่อไปให้เอง

ผมจะใช้ OnEnter ของ Text Box อันต่อไป ของผมชื่อ MyName

Private Sub MyName_Enter()

Dim dteMax As Date
If IsNull(Me.MyDate) Or Me.MyDate = "" Then
If DCount("*", "Table2") <> 0 Then
dteMax = DMax("[MyDate]", "Table2")
dteMax = DateAdd("d", 1, dteMax)
Else
dteMax = Date
End If

Me.MyDate = dteMax

End If

End Sub
4 @R04292



รันได้แล้วตามที่ อจ.แนะนำวิธีการ+Code นี้

เวิร์ค ดี มาก ตามประสงค์

ขอบคุณเป็นอย่างยิ่งที่ให้ความกระจ่างครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0555s