แสดงกระทู้

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - kitisak

หน้า: 1 2 3 4 [5] 6
73
RowSource และ ColumnCount property มีค่าเป็นอะไรครับ และอีกอย่าง ทำไมระหว่างชื่อและนามสกุลถึงดูเหมือนมีช่องว่างหลายช่อง
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

74
น่าจะเพราะ AutoExpand property ไม่ได้กำหนดเป็น Yes ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

75
ภาษา VBA นำมาจากภาษา BASIC ซึ่งเป็นภาษาเก่าแก่ สิ่งนึงที่ตกทอดมาถึง VBA ก็คือหมายเลขบรรทัด เราสามารถใส่เลขที่บรรทัด จะเป็นเลขอะไรก็ได้ตั้งแต่ 1 ถึง 65535 และแต่ละบรรทัดจะเป็นเลขอะไรก็ได้ ไม่จำเป็นต้องเรียงลำดับ ไม่จำเป็นต้องมีทุกบรรทัด ขอให้ไม่ซ้ำใน Sub หรือ Function Procedure เดียวกันก็พอ โดยเขียนไว้เป็นส่วนแรกของโค้ดแต่ละบรรทัด ที่ทำๆกันมาเป็นมาตรฐานก็คือเริ่มจาก 10  และเพิ่มทีละ 10 เพื่อให้อ่านง่ายและสะดวกเมื่อมีการแทรกบรรทัดเพิ่ม จะได้ใส่เลขบรรทัดได้โดยไม่ต้องไปแก้หมายเลขของบรรทัดอื่นๆให้เสียเวลาครับ

ตย.ของโค้ดก็เช่น
โค๊ด: [Select]
Private Function NewSalesPrice(Price As Variant, Percent As Variant) As Single
          Dim Factor  As Single

          On Error GoTo ErrHandler

10        Factor = 1 + Percent / 100
20        NewSalesPrice = Price * Factor

ExitRtn:
30        Exit Function
               
ErrHandler:
40        MsgBox "In [NewSalesPrice], Line " & Str(Erl) & ", Error " & Str(Err.Number) & " : " & Err.Description
50        Resume ExitRtn
End Function

เลขบรรทัดทำหน้าที่แบบเดียวกับลาเบล เราสามารถสั่ง Goto <ลาเบล/เลขบรรทัด> หรือ GoSub <ลาเบล/เลขบรรทัด> เพื่อให้โค้ดข้ามไปทำงานที่บรรทัดตามเลขที่นั้นได้ แต่ประโยชน์ที่ชัดเจนที่สุดก็คือ ถ้าเกิด Runtime Error ขึ้นในบรรทัดของโค้ดที่มีเลขที่บรรทัดอยู่ เราสามารถใช้ฟังก์ชั่น Erl เพื่อคืนเลขที่บรรทัดออกมาได้ด้วย ดังนั้นเราจึงใส่ไว้ในส่วนของ Error Handling Routine เพื่อบอกให้ทราบว่าเกิดปัญหาที่บรรทัดอะไร การ Debug หรือแก้ไขปัญหาก็จะทำได้ง่ายขึ้นมาก แต่หากเกิด Error ในบรรทัดที่ไม่ได้ใส่หมายเลขบรรทัดเอาไว้  ฟังก์ชั่น Erl จะคืนค่าของเลขบรรทัดสุดท้ายที่อยู่ก่อนหน้าออกมาให้แทน หรือถ้าไม่มีเลย ก็จะคืนค่าเป็นศูนย์แทนครับ

ตย.ของข้อความ

โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

76


สามารถไปกำหนดได้ที่ File  >  Option  > Object Designer > QueryDesign
กำหนดรูปแบบฟ้อน กับขนาดได้เลยครับ


โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

77
เขียนข้อเสนอแนะให้ทีมพัฒนา Access access.uservoice.com/forums/319956-access-desktop-application

เขียนข้อเสนอแนะให้ทีมพัฒนา Office officespdev.uservoice.com/forums/224641-feature-requests-and-feedback?category_id=164751 ถ้าเกี่ยวกับ VBA IDE ให้เลือกหมวด Office Development Tools

Blog ของทีมซัพพอร์ทของ Access blogs.technet.microsoft.com/the_microsoft_access_support_team_blog/

Blog ของ Office365 ในเรื่องเกี่ยวกับ Access www.microsoft.com/en-us/microsoft-365/blog/access/
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

78
ห้อง MS Access / : กำหนดขนาดกระดาษด้วย VB
« เมื่อ: 13 มิ.ย. 61 , 23:50:28 »
ลองดูที่นี่ครับ
https://support.office.com/th-th/article/คุณสมบัติ-papersize-0bb787f4-c856-4ec8-b1fa-9473e27f5d98
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

79
โค๊ด: [Select]
Function CheckFont(fontName As String, Optional fontSize As Integer) As Boolean
    On Error Resume Next
    With New StdFont
        .Name = fontName
        If fontSize > 0 Then .Size = fontSize
        CheckFont = (StrComp(fontName, .Name, vbTextCompare) = 0)
        fontName = .Name
        fontSize = .Size
    End With
End Function
<การใช้งาน> CheckFont(ชื่อฟอนต์, ขนาดฟอนต์ (กำหนดหรือไม่ก็ได้))
CheckFont("พส. พิมพ์ดีด ๒ ใหม่", 12)
หรือ
CheckFont("พส. พิมพ์ดีด ๒ ใหม่")
 
Return:
True  คือ มีฟอนต์ชื่อ "พส. พิมพ์ดีด ๒ ใหม่" อยู่ในเครื่องแล้ว และใช้ขนาด 12 ได้
False คือ ไม่มีฟอนต์ชื่อ "พส. พิมพ์ดีด ๒ ใหม่" อยู่ในเครื่อง หรือใช้ขนาด 12 ไม่ได้

โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

80
ห้อง MS Access / : Alt+ลูกศรลง
« เมื่อ: 08 มิ.ย. 61 , 18:47:17 »
ได้ละครับ ขอบพระคุณอาจารย์มากๆครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

81
ห้อง MS Access / : Alt+ลูกศรลง
« เมื่อ: 08 มิ.ย. 61 , 18:33:04 »
จะใช้คำสั่ง Alt+ลูกศรลง เพื่อให้  combo ลงอัตโนมัติ แต่ไม่รู้ ว่าจะโค๊ตยังงัยครับ รบกวนอาจารย์ด้วยครับ

ผมสมมุติ Combobox ชื่อ Cb1 นะครับ ใช้ Event Gotfocus
โค๊ด: [Select]
Private Sub Cb1_GotFocus()
Me.Cb1.Requery
Me.Cb1.Dropdown
End Sub
เมื่อ curser ตกที่ combobox นั่นก็จะแสดงรายการทันที

โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

82
ถ้าคีย์หลักเป็น Autonumber โปรแกรมมันจะใส่ค่าให้ ถ้าไม่ใช่ก่อนจะไประเบียนอื่นก็ใส่ค่าให้มันก่อนครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

83
ก็ต้องแก้ตรงๆกำปั้นทุบดิน คืออย่าให้ฟิลด์ที่เป็นคีย์หลักมีค่าว่างหรือ Null ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

85
ขอสอบถามเพิ่มเติมครับ ถ้าต้องการให้ ไดอะล็อกซ์บ๊อกซ์ ที่ขึ้นมาให้เลือกไฟล์ เราจำกำหนดให้เลือกได้เฉพาะไฟล์รูปภาพได้ไหมครับ

Private Sub Import_Click()
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = True
f.Filters.Clear
f.Filters.Add "Picture Files", "*.bmp;*.jpg;*.gif;*.png"

If f.Show Then
    For i = 1 To f.SelectedItems.Count
        sFile = filename(f.SelectedItems(i), sPath)
        Me.GetFileName = sFile
        Me.GetFilePath = sPath
    Next
End If
End Sub

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

86
ใครพอจะมีวิธีอื่นๆอีกไหมครับ โดยใช้คิวรี่ในการสร้างเงื่อนไขครับ ขอบคุณมากครับผม
คำถามคือคุณจะสร้างตารางเพื่อสร้างโปรแกรม หรือต้องการจะสร้าง ID Number หรือ มีข้อมูลอยู่แล้ว ต้องการแยก เป็นหมวดหมู่ใหม่

ถ้าสองข้อหลัง ลองส่งไฟล์มาดูครับ
ถ้าข้อแรก ผมยกตัวอย่างการสร้างตาราง
การสร้างความสัมพันธ์ ของประเทศ จะต้องเริ่มจาก จังหวัด อำเภอ ตำบล หมู่บ้าน ลงไปเรื่อยๆ
ผมยังงงคำถามอยู่คับ

ลักษณะคล้ายๆที่ผมแนบไฟล์น่ะครับ แต่มันมีเงื่อนไข จะมีวิธีไหนที่เร็ว ง่าย ใช้เวลาน้อย ถ้าจะทำให้ตรงตามเงื่อนไขที่บอกไปน่ะครับ ขอบคุณมากครับผม
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

87
ขอสอบถามเพิ่มเติมครับ ถ้าต้องการให้ ไดอะล็อกซ์บ๊อกซ์ ที่ขึ้นมาให้เลือกไฟล์ เราจำกำหนดให้เลือกได้เฉพาะไฟล์รูปภาพได้ไหมครับ
ได้ครับกำหนดนามสกุลของประเภทรูป bmp jpg ประมาณนั้น เดี่ยวกลับไปแก้ให้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

88
ถ้า Drive D ยังไม่มี Floder ชื่อ iDoc ก็ไปสร้างไว้ก่อนนะครับ
ถ้าต้องกันวันที่ yymmdd แก้เป็น
โค๊ด: [Select]
Snow = Format(Date, "YYMMDD")
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

89
ต้องการออกแบบโปรแกรมดังนี้ครับ
1. เลือกไฟล์ ที่ต้องการ
2. เปลี่ยนชื่อไฟล์ ตามที่เรากำหนด โดยใช้ชื่อไฟล์เป็น ปปดดวว (ปี เดือน วัน)
3. copy ไฟล์นั้นแล้วนำไปลงไว้ที่ โฟลเดอร์ D:\iDoc
พอจะทำอย่างไรได้บ้างใน access ครับ

สวัสดีครับ ผมได้ลองทำโปรแกรมแบบที่ต้องการให้ดูตัวอย่างนะครับ
เมื่อเปิดมา ถ้าเรากด เลือกไฟล์ จะมี Dialog ให้เราเลือกไฟล์

เมื่อกดเลือกแล้ว ก็ไปกำหนด ชื่อใหม่ได้ครับ


เมื่อเราตั้งชื่อเสร็จกด ส่งออกไฟล์ จะได้ไฟล์ดังในรูป


ตัวอย่างคำสั่ง

โค๊ด: [Select]
Private Sub Command13_Click()
Call Copy
End Sub
Private Sub Import_Click()
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = True
If f.Show Then
    For i = 1 To f.SelectedItems.Count
        sFile = filename(f.SelectedItems(i), sPath)
        Me.GetFileName = sFile
        Me.GetFilePath = sPath
    Next
End If
End Sub
Sub Copy()
Dim sPath, sfilename, sLink, Snow, sCopyInto, myOutput As String
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Snow = Now
Snow = Format(Date, "YYYYMMDD")
sfilename = GetFileName
myOutput = Right(sfilename, Len(sfilename) - InStrRev(sfilename, "."))
sPath = GetFilePath
sLink = sPath & sfilename
sCopyInto = "D:\iDoc\" & Me.NewName & Snow & "." & myOutput
fso.CopyFile sLink, sCopyInto
Set fso = Nothing
End Sub
Public Function filename(ByVal strPath As String, sPath) As String
    sPath = Left(strPath, InStrRev(strPath, "\"))
    filename = Mid(strPath, InStrRev(strPath, "\") + 1)
End Function
ตัวอย่างด้านล่าง
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

90
ห้อง MS Access / > พิมพ์ออกเป็นไฟล์ PDF
« เมื่อ: 11 พ.ค. 61 , 13:09:46 »
ถ้าหมายถึงแต่ละหน้ามาจากแต่ละ Report ต่างกัน ให้นำแต่ละ Report มาใส่เป็น Sub Report ใน Report เปล่าๆสักตัวเหมือนอย่างในรูปที่มี WCH1, WCH2, WCH3 แล้วกำหนด Can Grow และ Show Page Header and Page Footer ของ Sub Report Control เป็น Yes และเพิ่ม Page Break Control คั่นระหว่างแต่ละ Sub Report เพื่อให้ขึ้นหน้าใหม่ทุกครั้งที่พิมพ์ Sub Report ตัวต่อไป ตอนพิมพ์ก็เลือกเครื่องพิมพ์ที่เป็น Pdf Printer ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: kitisak

หน้า: 1 2 3 4 [5] 6