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

 3,310   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 2

21 @R17445
ผมยังไม่เคยเห็นอาจารย์ . ยอมแพ้เลยครับ อาจารย์คงยังยุ่ง ไม่มีเวลาเล่นมากกว่านะครับ ^^
22 @R17446
โดยปกติการที่จะรันคำสั่ง sql ใน vba จะต้องใช้คำสั่ง DoCmd.RunSQL คอมไพเลอร์ถึงจะแปลผลได้หรือเปล่า ดังนั้นหากเรา = คำสั่งตามที่ทำ คอมไพเลอร์ก็ไม่น่าจะรู้จักว่ามันคืออะไร ใช่ใหม่ครับ ก็เลยคิดว่าน่าจะสร้างตัวแปลขึ้นมาเก็บค่าที่ใช้คำสั่ง DoCmd.RunSQL เสียก่อนแล้วค่อยนำมาบวกกับ "D" อีกทีหรือเปล่า
23 @R17447
ถ้าใช้วิธีของอาจารย์ TTT น่าจะต้องไปเปิดใช้ DAO ก่อนหรือเปล่า
24 @R17448
ก่อนอื่นต้องขอแจ้งเพื่อทราบก่อนนะครับว่า

ผมชื่อ "ธัชชัย" นะครับ

สำหรับวิธีการมีดังต่อไปนี้นะครับ

1. ที่ฟอร์ม ให้เราใส่ Combo Box เข้าไป ตั้งชื่อว่า cboLastDrugCode
2. ที่ RowSource ให้ใส่ SQL นี้เข้าไป
SELECT Max(Mid([DrugCode],2,5)) FROM tblDrug;

3. กำหนดให้ Visible เป็น No (เพื่อทำการซ่อน) ให้ Combo Box อันนี้
4. สร้างปุ่มขึ้นมา 1 ปุ่ม แล้วใส่ Code นี้เข้าไปครับที่ Event: On Click

    Dim MyNewCode
    Requery
    MyNewCode = cboLastDrugCode.ItemData(0)
    MsgBox MyNewCode

ที่เหลือคุณไปจัดการต่อเองนะครับ เพราะคุณได้หมายเลขมากสุดเข้ามาเก็บในตัวแปรชื่อ MyNewCode แล้ว
25 @R17449
ขอบพระคุณอาจารย์ ธัชชัย ครับ ชื่อคล้ายๆ ผมเลย

วิธีนี้ ก็โอเคเหมือนกันครับ คล้ายๆ กับที่ผมทำ แต่ดีกว่าตรงที่อยู่ในฟอร์มเดียวกัน
เวลาลบฟอร์มก็หายหมด แต่ผมก็ยังอยากได้แบบเป็น VBA นะครับ มันประยุกต์ได้
มากกว่าครับ

อาจารย์ polo เดี๋ยวผมจะลองแนวคิดอาจารย์ มาทำดูครับ ขอบคุณครับ
26 @R17450
งั้นต้องใช้วิธีการของคุณ TTT แล้วล่ะ เพราะเป็นวิธีที่สั่นสุด ง่ายสุด สำหรับ VBA ล้วน

ถ้าใช้ ADODB คำสั่งจะยาวกว่านี้อีก 1 ช่วงตึก

สำหรับวิธีการของคุณ TTT ต้องไปเปิดใช้ DAO ก่อนถึงจะใช้งานได้ครับ
27 @R17451
เอาล่ะวิธีสุดท้ายแล้วครับ
VBA ล้วน และสั้นสุดๆ

ใช้ฟอร์มเดิมจาก R17448
ใส่ปุ่มใหม่ แล้วใส่ Code นี้เข้าไปที่ Event On Click

    MyNewDrug = CurrentDb.OpenRecordset("SELECT Max(Mid([DrugCode],2,5)) as myCode FROM tblDrug; ").OpenRecordset.Fields("myCode")
    MsgBox MyNewDrug

น่าจะปิด Case ได้นะครับ
28 @R17452
Private Sub Add1_Click()
On Error GoTo Add:
        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)
            DoCmd.GoToRecord , , acNewRec
            Me.drugCode = "D" & rs!DC + 1
            rs.Close: Set rs = Nothing     
Add:
              MsgBox Err.Description, vbCritical, "Error"
End Sub


จบลงด้วยรูปแบบของอาจารย์ TTT ครับ

ของอาจารย์ธัชชัย ก็ใช้ได้ครับ รูปแบบเหมือนของอาจารย์ TTT

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