เขียนโค๊ตอ้างถึง Query
กระทู้เก่าบอร์ด อ.Yeadram

 3,299   28
URL.หัวข้อ / URL
เขียนโค๊ตอ้างถึง Query

Query ผมเป็นแบบนี้

SELECT Max(Mid([drugCode],2,5)) FROM Drug;

Query ผมไปหารหัสยาสุดท้ายว่าคืออะไร ที่ต้องใช้ MID เพราะรหัส มีอักษรนำ 1 ตัว

คำถามคือ ผมจะเขียนโค๊ต อ้างถึง Query นี้ โดยที่ผมจะไปเก็บเป็น Query จะอ้างโดยใช้

โค๊ตนี้เลย >>SELECT Max(Mid([drugCode],2,5)) FROM Drug;

จะเขียนยังงัยครับ ถ้าไม่เข้าใจ จะอธิบายเพิ่มครับ ขอบคุณครับ

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

1 @R17423
VBA ใช่ไหมครับ ถ้าใส่ก็ใส่ Code เข้าไปตรงๆ เลย

แต่ที่ไม่เข้าใจคือ กระบวนการว่าต้องการนำ Code นี้ไปใช้กับ Control อะไร และ Event ไหน
2 @R17424
ประมาณว่า

SELECT Max(Mid([drugCode],2,5)) FROM Drug; บรรทัดนี้ เท่ากับ 25

ผมคลิก Botton แล้ว ก่องข้อความ เท่ากับ D26 สมมุติกล่องข้อความชื่อ Dcode

ครับอาจารย์
3 @R17425
เอิ่ม งงมาก
รบกวนส่งตัวอย่างไฟล์มาให้หน่อยครับ
เอาเฉพาะที่เป็นปัญหานะครับ ข้อมูลอื่นๆ ลบออกได้เลย ไม่ต้องส่งมา


mrtouch999@gmail.com
4 @R17428
ไม่ต้องส่งตัวอย่างหรอกครับ เพราะมันไม่มีอะไรเลย ปกติผมจะทำ Query ขึ้นมา
สมมุติชื่อ qMaxDC โดยใน Query เป็นแบบนี้ >>SELECT Max(Mid([drugCode],2,5)) AS DC FROM Drug;

ในฟอร์มผมมี กล่องข้อความ สมมุติกล่องข้อความชื่อ Dcode ผมสร้าง ปุ่ม ชื่อ comDC ฝังโคตไว้แบบนี้

Private Sub comDC_Click()
        DoCmd.GoToRecord , , acNewRec
        Me.Dcode = "D" & Dlookup("[DC]", "qMaxDC") + 1
End Sub

แต่ผมไม่อยากทำ Query เพราะว่าเวลาจะลบฟอร์ม จำไม่ได้ว่าใช้ Query ตัวไหนมั่ง

เลบคิดว่าน่าจะเขียนโคตได้ เช่น

Private Sub comDC_Click()
    Dim DCmx As String
        DCmx = "SELECT Max(Mid([drugCode],2,5)) AS DC FROM Drug;"

        DoCmd.GoToRecord , , acNewRec
        Me.Dcode = "D" & DCmx + 1
    End Sub

คือ ไม่รู้ว่าเค้าทำยังงัย แต่เดาๆ เอา แล้วมัน Error ครับ
5 @R17429


ใส่ Code นี้เข้าไปแทน DCmx = "SELECT Max(Mid([drugCode],2,5)) AS DC FROM Drug;"

Me.RecordSource = SELECT Max(Mid([drugCode],2,5)) AS DC FROM Drug;

ส่วนบันทัดอื่นไม่แน่ใจครับ เพราะไม่เห็นตัวอย่าง
6 @R17430
ไม่น่าจะได้ครับ RecordSource ผมใช้จากตาราง Drug เลยครับ
7 @R17431
เออเรอเพราะเครื่องหมาย ; ด้านหลังหรือเปล่าครับ เท่าที่ผมใช้คำสั่ง sql ใน vba ที่ผ่านมา จะไม่ใส่เครื่องหมาย ; นี้ครับ ลองลบออกแล้วรันดูครับ
8 @R17432
DCmx = DMax("Mid(drugCode,2,5)", "Drug")
9 @R17433
ถ้าหมายถึงอยากคิวรี่โดยไม่ต้องสร้างแต่ต้องการผลอย่างเดียว ลองแบบนี้ดูครับ

    Dim rs As DAO.Recordset, SQL As String
    SQL = "SELECT Max(Int(Mid([drugCode],2,5))) AS DC FROM Drug;"
    Set rs = CurrentDb.OpenRecordset(SQL)
    Me.Dcode = "D" & rs!DC + 1
    rs.Close: Set rs = Nothing
10 @R17434
อาจารย์ . มันขึ้น Error ครับ ผมอาจจะเอาไปใส่ไม่ถูก

อาจารย์ TTT ครับ คลิกแล้ว นิ่งครับ เหมือนปุ่มไม่มีคำสั่ง
11 @R17435
errorว่า?
12 @R17436
OK ผมทดสอบแล้วนะครับ

ผมมีตารางชื่อ tblDrug อยู่ ประกอบด้วยฟิลด์ DrugCode,Drugname

ผมสร้างฟอร์มขึ้นมา โดยใช้ตาราง tblDrug นี่แหละ

จานนั้นใส่ปุ่ม 1 ปุ่ม แล้วใส่ Code นี้เข้าไป

Me.RecordSource = "SELECT DrugCode, DrugName FROM tblDrug GROUP BY DrugCode, DrugName ORDER BY Max((Mid([DrugCode],2,5))) DESC;"

ให้อยู่บรรทัดเดียวกันนะครับ

ใช้ได้แน่นอน
13 @R17437
อาจารย์ธวัชชัยครับ ผมต้องการให้ เมื่อกดปุ่ม แล้ว
เพิ่มเรคคอดในตารางยา โดยรหัสยามัน เพิ่มขึ้นเองนะครับ ตัวอย่าง

รหัส        ชื่อยา
D1           A
D2           B

เมื่อกดปุ่ม มันจะ ขึ้น D3 ให้เอง แบบนี้ครับ
14 @R17438
ลองของอาจารย์ TTT ใหม่ โดยเพิ่ม >>DoCmd.GoToRecord , , acNewRec
ก็ยัง Error ที่ DC (สีแดง) เลยลองไปเพิ่ม DC As Long ก็ยัง Error

Dim rs As DAO.Recordset, SQL As String,DC As Long
    SQL = "SELECT Max(Mid([drugCode],2,5)+1) AS DC FROM Drug;"
    Set rs = CurrentDb.OpenRecordset(SQL)
    DoCmd.GoToRecord , , acNewRec
    Me.dCode = "D" & rs!DC
    rs.Close: Set rs = Nothing
15 @R17439
ลองของอาจารย์ .
        Dim DCmx As Long
        DCmx = DMax("Mid(drugCode,2,5)", "Drug")
        Me.drugCode = "D" & DCmx + 1

คลิกแล้วไม่มีอะไรเกิดขึ้นเลบครับ
ตอนแรกที่ว่า Error เขียนดักให้ฟ้อง Error มันขึ้นเป็น
เครื่องหมาย X อย่างเดียว ไม่มีอะไรแจ้งเลยครับ
16 @R17440
ยอมแพ้ ไม่เข้าใจ
17 @R17441
เอิ่ม! นี่ผมเพิ่งรู้นะนี่ว่าต้องการเพิ่มเรคอร์ด

ผมก็นึกว่าดึงข้อมูลมาแสดง

เฮ้อ!

ผมถึงได้บอกว่าให้ส่งไฟล์มาให้ดู จะได้เข้าใจ (ขอบ่นหน่อยเถอะ อย่าเคืองกันล่ะ)

สรุปแล้วคือคุณต้องการเพิ่มเรคอร์ดใหม่ แบบใส่รหัสยาให้เลยใช่มะ

ทีนี้มีคำถามว่า แล้วรหัสยาที่ใช้มีรูปแบบเป็นอย่างไร

D00001 ไปถึง D99999 ใช่มั๊ย

หรือมีรูปแบบอะไรอีก
18 @R17442
ขอโทษอาจารย์นะครับ

รูปแบบผมทำได้ ผมอยากได้แค่ ทำอย่างไร ที่ไม่ต้องทำ Query

โดยเอา Query มาในรูป SQL เลย คล้ายๆ แบบของอาจารย์ TTT

แต่วิธี ผมไม่ทราบวิธีครับ
19 @R17443
งั้นสิ่งที่ต้องการคือ เมื่อคลิกปุ่มแล้ว ให้ใส่รหัสยาให้อัตโนมัติใช่ไหมครับ

ซึ่งจริงๆ แล้ว ไม่จำเป็นต้องใช้ SQL ก็ได้นะครับ เพราะ SQL มีหน้าที่หลักในการดึงข้อมูลครับ โดยเฉพาะถ้าใช้คำสั่ง SELECT เนี่ยะ

ถ้าใช่แบบนี้แล้วล่ะก็บอกมา เดี๋ยวจะแนะนำให้ใช้วิธีอื่นแทน
20 @R17444
อาจารย์ธวัสชัยครับ ผมทำได้แล้วครับ เพียงแต่ว่า
อยากเรียนรู้วิธีใหม่ๆ เพราะมีเงื้อนไขใหม่ๆ ให้อยากทำวิธีนี้
ซึ้ง จะเอาไป ประยุกต์ให้งานดีขึ้น และ ทำอย่างอื่นอีกทีครับ

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