สามารถรัน Macro ต่างฐานข้อมูลได้หรือไม่
กระทู้เก่าบอร์ด อ.Yeadram

 1,793   8
URL.หัวข้อ / URL
สามารถรัน Macro ต่างฐานข้อมูลได้หรือไม่

ความต้องการคือ อยากหาวิธีที่สามารถรัน Macro จากฐานข้อมูลอื่นๆ (.mdb) คือผมเขียนคิวรี่ไว้ในฐานข้อมูลจากนั้นก็สร้าง Macro ผูกคิวรี่ไว้ให้รันต่อเนื่องไป ปัญหาคือ มันมีฐานข้อมูลที่ทำแบบนี้ ไว้หลายอัน เลยอยากจะสร้าง mdb ใหม่เพื่อให้ user ใช้งานได้ง่ายขึ้นโดยที่ไม่ต้องเข้าไปรัน macro ทีละตัวจากฐานข้อมูลอื่นๆ อีก มีวิธีการอย่างไรบ้างครับ

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

1 @R11124
ปัญหา Requirement ไม่ชัดเจน Design ไม่ดี ครับ
ต้องแก้กันตั้งแต่ความคิดเบื้องต้นครับ ว่าที่จริงต้องการอะไร ไม่ใช่อยากได้ระบบแบบไหน
2 @R11126
จริงๆ คือ มีคนเขียนคิวรี่ไว้แล้วแต่เขาแยกข้อมูลออกเป็น ถังๆ เพราะข้อมูลที่ใช้มีหลายวัตถุประสงค์ ครับข้อมูลเป็น Text ไฟล์ แต่ Import เข้า access แล้วคิวรี่กรอกข้อมูลอีกที ครับตามเงื่อนไขที่กำหนด

เพียงแต่คนที่เขาทำไว้แล้ว เขาแยกข้อมูล ออกเป็นถังๆ ไม่เอามารวมกันเนื่องจากเวลาใช้งานจะงง นะครับ ทีนี้ข้อมูลตรงนี้จำเป็นต้อง ทำเป็น Daily ครับคือมีข้อมูลมาใหม่ทุกๆ วัน ดังนั้นจึงเขียน Macro ไว้แต่ละฐานข้อมูลเพื่อสะดวกเวลาใช้งาน

แต่อยากให้ง่ายกว่านี้คือ สามารถรัน Macro จากฐานข้อมูลเดียวไปเลยครับ ไม่ต้องเข้าไปทีละฐานข้อมูล หากไม่ได้ ก็ไม่เป็นไรครับ
3 @R11127
ลองสร้าง MS Access ตัวใหม่ แล้ว สร้าง Command Button
เขียน code ที่ เหตุการณ์ click

Dim appAccess As Access.Application
Dim strDB as String 'ใช้กำหนด path ไปยัง ms access ที่ run macro


    ' Initialize string to database path.
    Const strConPathToSamples = "C:\Program " _
        & "Files\Microsoft Office\Office11\Samples\"

    strDB = "C:\Program " _
        & "Files\Microsoft Office\Office11\Samples\Northwind.mdb"

    ' Create new instance of Microsoft Access.
    Set appAccess = _
        CreateObject("Access.Application")
    ' Open database in Microsoft Access window.
    appAccess.OpenCurrentDatabase strDB
    ' Open Macro
    appAccess.DoCmd. .... คำสั่งในการ run macro
End Sub
          
ถ้า work ก็ สร้างปุ่มตามจำนวน macro ผู้ใช้ก็ run จาก ms access ตัวนี้

4 @R11128
ลบ ข้างล่างทิ้งไปครับ
' Initialize string to database path.
    Const strConPathToSamples = "C:\Program " _
        & "Files\Microsoft Office\Office11\Samples\"

5 @R11131
ขอบคุณครับ จะลองทำตามคำแนะนำดูครับ แล้วจะมารายงานผล
6 @R11142
เรียนคุณ ditasilk ครับ โค้ดทำงานได้ครับแต่ว่า มันจะค้างครับรันข้อมูลเสร็จเหมือนกับว่ามันไม่ยอมปิด Database ให้ครับ จะขึ้นสัญลักษณ์เหมือนมีคนใช้งานอยู่ ครับเป็น .ldb ครับ ลองเพิ่มเติมโค้ด
appAccess.CloseCurrentDatabase ต่อบรรทัดสุดท้ายก็ไม่หายครับ
รบกวนแนะนำด้วยครับ ขอบคุณครับ
7 @R11143
ได้แล้วครับ
ใช้คำสั่ง
appAccess.Application.Quit acQuitSaveNone
set appAccess = Nothing
ขอบคุณครับ
8 @R11149

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