ขอทราบโค้ดตรวขสอบว่าในเครื่องมีไดร์ฟ D:\ อยู่หรือไ
กระทู้เก่าบอร์ด อ.Yeadram

 1,382   12
URL.หัวข้อ / URL
ขอทราบโค้ดตรวขสอบว่าในเครื่องมีไดร์ฟ D:\ อยู่หรือไ

รบกวนขอความช่วยเหลือจากอาจารย์ทุกท่านด้วยค่ะ

คือหนูอยากได้โค้ดคำสั่งตรวจสอบว่า ปัจจุบันในเครื่องมี HDD. ไดร์ฟ D:\ อยู่หรือไม่

-หากมีไดร์ฟ D:\ อยู่ ก็ให้ทำงานต่อไป
-หากไม่มีไดร์ฟ D:\ ก็ให้ msg แจ้งเตือน และยกเลิกการทำงาน

ขอแถมอีกเรื่องหนึ่งนะคะ
-เราสามารถกำหนด Path ของ my documents
ที่สามารถนำไปใช้กับทุก Windows ได้หรือไม่/อย่างไรคะ

ขอความช่วยเหลือด้วยนะคะ ขอบคุณค่ะ

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

1 @R22385
-หากไม่มีไดร์ฟ D:\ ก็ให้ msg แจ้งเตือน และยกเลิกการทำงาน
* ใช้ API แบบนี้ก็ได้ครับ
Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

การเรียกใช้
    If GetDriveType("D:") = 1 Then
        MsgBox "No Drive"
    End If

-เราสามารถกำหนด Path ของ my documents
ที่สามารถนำไปใช้กับทุก Windows ได้หรือไม่/อย่างไรคะ
* ใช้คำสั่ง
CurDir$()
หรือ
CreateObject("WScript.Shell").currentDirectory

ปรับใช้ดูครับ
2 @R22386
ขอบคุณค่ะอาจารย์
เดี๋ยวจะลองปรับใช้ดูนะคะ
หากไดร์ฟ D:\ มันเป็น DVD หรือ CD-Rom จะมีความหมายเดียวกันหรือเปล่าคะ
3 @R22387
หนูลองทำตามแล้ว Compile error ตามในรูปเลยค่ะอาจารย์

ไม่ทราบว่าหนูทำผิดตรงไหน

โปรดแนะนำด้วยค่ะอาจารย์
4 @R22388
แก้ไขรูป
5 @R22389
เรียนอาจารย์ TTT
หนูเจอข้อผิดพลาดแล้วค่ะ ผิดตรงที่หนูเอาโค้ด
Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
ไปใส่ไว้ใน [Event Procedure] มันก็เลย Error
พอย้ายไปไว้ในโมดูลที่สร้างขึ้นใหม่ ก็ใช้ได้เรียบร้อยแล้วค่ะอาจารย์
6 @R22390
คือฟังก์ชั่น GetDrvieType เมื่อเรียกจะส่งค่ากลับเป็นตัวเลขมาคือ
1 = ไม่มีไดร์ฟ
2 = Removable ไดร์ฟแบบถอดเข้าออกได้ และฟลอบปี้ดิสก์
3 = Fixed ไดร์ฟฮาร์ดดิส
4 = Remote ไดร์ฟพวกเน็ตเวิร์ค ที่เราทำการ map
5 = CDROM
ุ6 = Ramdisk ไดร์ฟที่เราสร้างขึ้นโดยการแบ่ง Ram มาทำ

หากคุณต้องการนับว่าไดร์ฟ CDROM ถือว่าไม่มีไดร์ฟด้วยก็เพิ่มเงื่อนไขเป็น
    Dim Drv as Long
    Drv = GetDriveType("D:")
    If Drv = 1 OR Drv = 5 Then
        MsgBox "no supported drive found"
    End If

ประมาณนี้ครับ
7 @R22391
ขอบพระคุณอย่างยิ่งค่ะอาจารย์
8 @R22392
ขอรายงานผล
ยังไม่สำเร็จตามที่ต้องการเลยค่ะอาจารย์

หนูอยากให้ระบบมันตรวจสอบเฉพาะ ฮาร์ดดิสเท่านั้น ว่ามี่ไดร์ฟ D:\ อยู่หรือไม่
หากไดร์ฟ D:\ มันเป็น CD-Rom หรืออื่นๆ ก็ให้ถือว่า ไม่มีไดร์ฟ D:
หนูลองใส่ค่า 1-6 แล้ว ก็ยังไม่สำเร็จ โดยจะตอบสนองเฉพาะค่า =1 เท่านั้น
ค่า =2-6 นั้นไม่มีการตอบสนองใดๆเลยค่ะอาจารย์

ลองดัดแปลงปรับใช้
Dim Drv as Long
    Drv = GetDriveType("D:")
    If Drv = 1 OR Drv <> 5 Then
        MsgBox "no supported drive found"
    End If
แล้วก็ยังไม่ได้เช่นกันค่ะ
9 @R22393
อื่ม ถ้า HDD อย่างเดียว ก็ต้องเป็นค่า 3 ครับ คือถ้าไม่เท่ากับ 3 ก็ถือว่าไม่รองรับ

    Dim Drv As Long
    Drv = GetDriveType("C:")
    If Drv <> 3 Then
        MsgBox "no supported drive found"
    End If

ประมาณนี้หรือเปล่าครับ
10 @R22394
คือว่า ถ้าไดร์ฟ D ที่มีอยู่ ไม่ไช่ฮาร์ดดิส
ก็ให้ถือว่า ไม่มีไดร์ฟ D ค่ะอาจารย์
เดี๋ยวเย็นนี้.หนูจะลองปรับแก้ดูใหม่นะคะ
ได้ผลอย่างไร จะรีบแจ้งให้ทราบเลยค่ะอาจารย์
11 @R22395
ใส่คำสั่ง ที่ procedure ที่ต้องการตรวจสอบ

If FolderExists("D:") Then
      MsgBox "FOUND"
Else
      MsgBox "NOT FOUND"
End If
End Sub

Function FolderExists(strPath As String) As Boolean
    On Error Resume Next
    FolderExists = ((GetAttr(strPath) And vbDirectory) = vbDirectory)
End Function
ถ้าต้องการ ตรวจสอบ HARD DISK ด้วย ก็ประยุกต์ เองครับ
12 @R22397
ยอดเยี่ยมเลยค่ะอาจารย์ TTT
ปรับแก้ใหม่ตามที่ท่านแนะนำ

    Dim Drv As Long
        Drv = GetDriveType("D:")
     If Drv <> 3 Then
        MsgBox "no supported drive found"
    End If

ได้ผลสำเร็จตามที่ต้องการแล้วค่ะอาจารย์
ขอบพระคุณอย่างสูงค่ะ

สำหรับคำแนะนำของอาจารย์ ditasilk นั้น หนูยังไม่ได้นำมาทดลองใช้
แต่ก็ขอขอบพระคุณ และจะขอนำเก็บไว้ทดลองใช้ในโอกาสต่อไปนะคะ

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