สมัครสมาชิก

แสดงกระทู้

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 - ปิ่นณรงค์

หน้า: [1] 2 3 4 ... 17
1
อยู่ข้างล่าง ครับ  กรณีตอบกระทู้มันจะขึ้นว่าตั้งกระทู้ครับ
ส่วนกรณีแก้ไข ปุ่มจะเปลี่ยนเป็น ปุ่มบันทึก ครับ




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

2
ห้อง MS Access / : Popup ข้อความ
« เมื่อ: 19 มี.ค. 62 , 09:35:00 »
ใช้ .ControlTipText แสดงข้อความเมื่อเม้าส์ไปโดนก็ได้นะคับ
มีตาราง Table1
มี Field ID , Comment

มี textbox ID กับ Comment

โค๊ด: [Select]
Private Sub Comment_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not IsNull(Me.Comment) And Not IsNull(Me.ID) Then
Me.Comment.ControlTipText = DLookup("Comment", "Table1", "ID =" & Me.ID & "")
Else
Me.Comment.ControlTipText = Null
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: naekkhung

3
ห้อง MS Access / : input mark
« เมื่อ: 17 มี.ค. 62 , 14:02:23 »
ใส่ Input Mark ยังงัย ให้บันทึกไอดีต่างชาติ แบบนี้ได้ครับ

0-0000-T035991-3
น่าจะแบบนี้นะครับ
0\-0000\-A000000\-0;0;_
โดย A ใช้แทนตัวอักษรหรือตัวเลข 1 ตัวคับ

ผมใช้ Event Form_Load นะครับปกติ หรือกำหนดที่ตัว Control เลยก็ได้คับ
โค๊ด: [Select]
Private Sub Form_Load()
Me.Text2.InputMask = "0\-0000\-A000000\-0;0;_"
End Sub

ไม่รู้ผมตอบตรงโจทย์ หรือเปล่านะครับ
ไม่รู้ว่าต้องการแยก ID T0359913 เป็น 0-0000-T035991-3
หรือต้องการกำหนด InputMask แบบข้างบน  :cool: :cool:

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

4
สามารถกำหนดได้ตรง Event Detail_Print นะครับ
โดยในหน้าออกแบบเราใส่เส้นไว้ใต้ textbox 1 เส้น ผมตั้งชื่อว่า  Line1 กำหนดความหนาของเส้นไว้ให้เรียบร้อยครับ
ส่วนโค้ดก็ตามนี้
โค๊ด: [Select]
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If Me.id1 = "3" And Me.Team = Text3 Then
Me.Line1.Visible = True
Me.Line1.BorderColor = vbRed
Else
Me.Line1.Visible = False
End If
End Sub

text3 คือ หัวของรายงาน ที่ Group เอาไว้

จากคำสั่งนี้ ไม่ว่ามีกี่ิอันดับในแต่ละกลุ่ม คำสั่งจะจับข้อมูลที่ ลำดับเท่ากับ 3 และ อยู่ในกลุ่มเดียวกันถึงจะแสดงเส้นสีแดงขึ้นมาคับ

ผลลัพธ์ที่ได้

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

5
อันใหม่เพื่อท่านจะ ใช้ลิ้ง Youtube ในการ download ครับ
กดปุ๊บ ลิ้งดาวน์โหลดสีเขียวแสดงปั๊บ  :cool: :cool:

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

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

7
ห้อง MS Access / : สร้าง กดปุ่ม button
« เมื่อ: 10 มี.ค. 62 , 16:33:48 »
ต้องการสร้าง กดปุ่ม button  มีปุ่มบันทึกข้อมูล  กับปุ่มจบการทำงาน
เขียนโค๊ตอย่างไรครับให้ปุ่มกดจบการทำงาน ไม่ทำงาน  จนกว่าจะมีการกดปุ่มบันทึกข้อมูลถึงจะกลับมาทำงานได้ครับ

มีหลายวิธีครับ ตัวอย่างเช่น
การกำหนดตัวแปร ไว้เพื่อใช้ตรวจสอบสถานะการทำงานของปุ้มบันทึกเช่น
โค๊ด: [Select]
Private Sub BtnSave_Click()
Dim SaveEvent  As String
Dim DB As Database
Dim RS As Recordset
   If MsgBox("ต้องการบันทึกข้อมูลข้อมูล ?", vbOKCancel + vbQuestion, "สอบถาม") = vbOK Then
        Set DB = CurrentDb()
        Set RS = DB.OpenRecordset("Table1", DB_OPEN_DYNASET)
    RS.AddNew
    RS![Field1] = Me.Text1
    RS![Field2] = Me.Text2
    RS![Field3] = Me.Text3
    RS.Update
    RS.Close
    DB.Close
    Set RS = Nothing
    Set DB = Nothing
    Call ResetForm
    SaveEvent = "1"  'ถ้าเราบันทึกก็ให้ตัวแปร = 1
    Else
    SaveEvent = "0" 'ถ้าเราไม่บันทึกให้ตัวแปร = 0
    End If
    If SaveEvent = "1" Then
    Me.BtnClose.Enabled = True
    ElseIf SaveEvent = "0" Then
    Me.BtnClose.Enabled = False
    End If   
End Sub

คำสั่งในการเปิดปิดการใช้งานคือ ชื่อตัวControl.Enabled = False หรือ True
โพสต์นี้ได้รับคำขอบคุณจาก: Pakkret Non

8
ขอเพิ่มเติมอีกวิธีนะครับ


ที่ Module ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
Function MyHexColor(ByVal StrHex)
 
    If Len(StrHex) = 7 Then StrHex = Mid(StrHex, 2, 6)
    If Len(StrHex) = 6 Then

        num_array = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f")
        char1 = LCase(Mid(StrHex, 1, 1))
        char2 = LCase(Mid(StrHex, 2, 1))
        char3 = LCase(Mid(StrHex, 3, 1))
        char4 = LCase(Mid(StrHex, 4, 1))
        char5 = LCase(Mid(StrHex, 5, 1))
        char6 = LCase(Mid(StrHex, 6, 1))
        For i = 0 To 15
            If (char1 = num_array(i)) Then position1 = i
            If (char2 = num_array(i)) Then position2 = i
            If (char3 = num_array(i)) Then position3 = i
            If (char4 = num_array(i)) Then position4 = i
            If (char5 = num_array(i)) Then position5 = i
            If (char6 = num_array(i)) Then position6 = i
        Next
        If IsEmpty(position1) Or IsEmpty(position2) Or IsEmpty(position3) Or IsEmpty(position4) Or IsEmpty(position5) Or IsEmpty(position6) Then
            MyHexColor = -1
        Else
            MyHexColor = RGB(position1 * 16 + position2, position3 * 16 + position4, position5 * 16 + position6)
        End If
    Else
        MyHexColor = -1
    End If
End Function

ที่ฟอร์มกำหนดค่า ในส่วนของ Detail
โค๊ด: [Select]
Private Sub รายละเอียด_Paint()
If Not IsNull(Me.HEX) Then
    Me.COLOR.BackColor = MyHexColor(HEX)
    Else
    Me.COLOR.BackColor = MyHexColor("#FFFFFF")
 End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown, สันติสุข, Kxess, nikorn

9
เช่น พนักงาน ID  A001 อยากจะให้ดึงรูปภาพ ของพนักงานคนนั้น มาแสดงในฟอร์ม หรือ รายงาน โดยอยากให้ผูก ID กับชื่อ image file ทำอย่างไรครับ

\images\A001.jpg
\images\A002.jpg
\images\A003.jpg
\images\A004.jpg

ขอบคุณมากครับ


มีให้ลองนำไปใช้ดู 2 แบบนะครับ
ถ้าในฟอร์มหรือรายงาน ท่านเอา Field ID เข้ามาใส่ไว้ด้วย และ ตั้งชื่อ Textbox ว่า ID เราก็สามารถกำหนดค่าให้กับ กรอบ Image ที่ต้องการได้ครับเช่น
แบบที่ 1 เขียนโค้ดบนฟอร์มหรือรายงาน
Private Sub Form_Current()
Call PathOfImage
End Sub

Sub PathOfImage()
Dim StrPath, StrPathDir As String
StrPath = "C:\images\" & Me.ID & ".JPG"  'กำหนด Path ของรูปภาพโดยอ้างอิงไปที่ textbox ID
StrPathDir = Dir(StrPath) 'ตรวจสอบดูก่อนว่ามีไฟล์รูปชื่อนี้อยู่จริงหรือไม่
If StrPathDir <> "" Then 'ถ้าตรวจสอบแล้วมีอยู่จริง
Me.Image.Picture = StrPath 'ถ้ามีอยู่ก็ให้กำหนด Path ให้กับ Image
Else
Me.Image.Picture = "" 'ถ้าไม่เจอไฟล์รูปที่ตรงกับ ID ของเราก็ให้แสดงกรอบว่างๆไป
End If
End Sub

แบบที่ 2 สร้าง Calculate Field
สร้าง Field Calculate มาแล้วใส่ค่าไปว่า
"C:\images\" & [ID] & ".JPG"
แล้วท่านก็ไปกำหนดแหล่งตัวควบคุมของ Image เอาท่านก็จะได้ ลิ้งอัตโนมัติเลยคับ

ผมมีตัวอย่างให้ท่านคลาย Zip ไปไว้ที่ Drive C แล้วลองเทสดูคับ
โพสต์นี้ได้รับคำขอบคุณจาก: diehard4

10
ลองดูตัวอย่างนี้ดูครับ
โค๊ด: [Select]
Sub GetColor()
Dim lngWhite As Long
Dim lngYellow As Long
lngYellow = RGB(255, 255, 0)
lngWhite = RGB(255, 255, 255)
If Not IsNull(Me.ยอดทั้งหมด) And Not IsNull(Me.ยอดที่ใช้ไป) Then
    If Me.ยอดทั้งหมด > Me.ยอดที่ใช้ไป Or _
    Me.ยอดทั้งหมด < Me.ยอดที่ใช้ไป Then
    Me.ยอดทั้งหมด.BackColor = lngYellow
    Me.ยอดที่ใช้ไป.BackColor = lngYellow
         Else
         Me.ยอดทั้งหมด.BackColor = lngWhite
         Me.ยอดที่ใช้ไป.BackColor = lngWhite
End If
    End If
End Sub
Private Sub ใช้ไป1_AfterUpdate()
Call GetColor
End Sub
Private Sub ใช้ไป2_AfterUpdate()
Call GetColor
End Sub
Private Sub ใช้ไป3_AfterUpdate()
Call GetColor
Me.ใช้ไป1.SetFocus
End Sub

ส่วนอยากกำหนดเป็นสีอะไรก็กำหนด ตัวแปลเป็นสีนั้น
 สีแดง   RGB(255, 0, 0)
สีดำ     RGB(0, 0, 0)
สีเหลือง RGB(255, 255, 0)
สีขาว    RGB(255, 255, 255)
โพสต์นี้ได้รับคำขอบคุณจาก: aek, Pakkret Non

11
ใช้การตรวจสอบค่าจาก Combobox แล้ว ใช้อ้างอิงกับชื่อรายงานใน ตาราง tblRCReport ที่ Field ReportName ครับ
1.ที่ RowSource กำหนดเป็น SELECT tblRCReport.ID, tblRCReport.ReportDescription FROM tblRCReport;
2. ที่ BoundColumn(คอลัมน์ที่ผูกไว้) กำหนดเป็น 1
3. ตรง Column Width(ความกว้างคอลัมน์) กำหนดเป็น 0ซม.;10ซม.
4. ตรง Event AfterUpdate ของ Combo1 ใส่โค้ดดังนี้คับ

โค๊ด: [Select]
Private Sub Combo1_AfterUpdate()
Dim SetReportName As String
SetReportName = DLookup("ReportName", "tblRCReport", "ID=" & Me.Combo1 & "")
DoCmd.OpenReport SetReportName, acViewReport
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: ekppom

12
ขอบคุณมากๆ ครับ
ได้ run ดูแล้ว Log ขึ้นแล้วครบครับ

แต่ลองใช้คำสั่งการเข้าระบบดู อย่างอื่น OK แต่หากพิมพ์  UserName ผิด มันขึ้นว่า Error บรรทัดนี่้แก้ไขอย่างไรครับ
 
Private Sub Command21_Click()

Dim fpass As String, fusername As String
If IsNull(Me.UserBox) Then
MsgBox "กรุณาระบุ UserName", vbInformation, "ข้อผิดพลาด"
Exit Sub
ElseIf IsNull(Me.PassBox) Then
MsgBox "กรุณาระบุ Password", vbInformation, "ข้อผิดพลาด"
Else
    fusername = DLookup("[UserName]", "User", "[UserName]='" & Me.UserBox & "'")
If fusername = "" Then
    MsgBox "ชื่อผู้ใช้ไม่ถูกต้อง", vbCritical, "ไม่พบชื่อผู้ใช้งาน"
    Me.Undo
    Me.UserBox.SetFocus

บรรทัดที่ตัวอักษรสีแดง จะแก้ไขอย่างไร รบกวนด้วยครับ

แก้เป็นแบบนี้ครับ
fusername = Nz(DLookup("[UserName]", "User", "[UserName]='" & Me.Userbox & "'"))

ลองดูจากตัวอย่างนี้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Keng

13
กำหนดให้ Control Source ของหน้ารายงาน Order เป็น
โค๊ด: [Select]
SELECT Order.[Order No], Order.[Reference no], Order.[Order Type], Order.Sale, Order.Company, Order.Customer, Order.[Order date], Order.Approver, Order.[Approval Date]
FROM [Order]
GROUP BY Order.[Order No], Order.[Reference no], Order.[Order Type], Order.Sale, Order.Company, Order.Customer, Order.[Order date], Order.Approver, Order.[Approval Date];

ส่วน Control Source หน้ารายงาน OrderDetail เป็น
โค๊ด: [Select]
SELECT Order.[Order No], Order.[Pre Approval no], Order.[Order date], Order.Description, Order.[Service Detail], Order.Currency, Order.Amount, Order.Approver, Order.[Approval Date]
FROM [Order];

เท่านี้ก็ได้แบบที่คุณต้องการแล้วคับ
โพสต์นี้ได้รับคำขอบคุณจาก: aek, nayaoo, LKS8

14
1.สร้าง  Function ไว้บน Module
โค๊ด: [Select]
Public Function MakeTableWithConvertToRow(ByVal sMainTable As String, ByVal sTempTable As String)
    Dim RS_IN As Recordset
    Dim RS_OUT As Recordset
    Dim ColName As Integer
    Set RS_IN = CurrentDb.OpenRecordset("Select" & "* from " & sMainTable & "")
    Set RS_OUT = CurrentDb.OpenRecordset("Select" & "* from " & sTempTable & "")
    Do While Not RS_IN.EOF
       For ColName = 1 To RS_IN.Fields.Count - 1
           RS_OUT.AddNew
           RS_OUT("ID") = RS_IN("ID")
           RS_OUT("Subject") = RS_IN(ColName).Name
           RS_OUT("G") = RS_IN(ColName).Value
           RS_OUT.Update
       Next
       RS_IN.MoveNext
    Loop
    RS_IN.Close
    RS_OUT.Close
    Set RS_IN = Nothing
    Set RS_OUT = Nothing
End Function

ที่ปุุ่ม CommandBotton ใส่
Private Sub Command0_Click()
Dim SQL As String
SQL = "DELETE * FROM TempTable"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
DoCmd.SetWarnings True
Call MakeTableWithConvertToRow("DATA", "TEMPTABLE")
End Sub

DATA คือ ตารางหลักของเรา
TempTABLE คือ ตารางที่จะแสดงผลลัพท์ครับ โดย  จะสร้าง Field ไว้ 3 Field คือ Field ID , Subject , G ครับ
ที่นี้ ไม่ว่าคุณจะมี กี่ตาราง ก็กำหนด ใช้ฟังชั่นได้หมดครับ
โพสต์นี้ได้รับคำขอบคุณจาก: laemthong

15
สุดยอดครับ ขอบคุณมากเลยครับ

สุดท้ายละครับ คือผมกำหนดในบาง Field MOrder ให้ run 0001 และ ClubID ให้ RUN 01 แต่พอเอามารวมกันแล้วมันไม่เอา 0 มาด้วย

จะแก้ไขยังไงได้บ้างครับ ให้มันกลายเป็น 101190001 แทนที่จะเป็น 11191

ขอบคุณอีกครั้งนะครับ ไว้จะพยายามศึกษาให้มากขึ้น แต่แหล่งขอมูลของ MS Access น้อยเหลือเกิน


ถ้า Field MOrder และ  ClubID DataType เป็น Number มีปัญหาแน่นอนคับ
แต่ถ้าเป็น Text ไม่มีปัญหานี้ครับ ถ้า Morder มี 4 หลัก ClubID มี 2 หลัก ลองแบบนี้คับ

[PositionID]&Right("00" & [ClubID],2)&Right([DOI],2)&Right("0000" & [Morder],4)




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

16
รบกวนถามอีกว่าเอาไปใส่ในช่องไหนครับ ผมลองเอาไปใส่ในช่อง Default value ใน field TSRAID ใน M-DTB table

ปรากฎว่ามันขึ้นว่า The Database engine does not recognize either the field 'PositionID' or the default value in the table 'M-DTB'

เลยอยากถามว่ามันต้องเอาไปใส่ตรงไหน

หรือต้องแก้ที่จุดไหนครับ

กำหนด Field TSRAID เป็น Calculate Field แล้วกำหนดนิพจน์แบบนี้ครับ
[PositionID]&[ClubID]&Right([DOI],2)&[MOrder]
โพสต์นี้ได้รับคำขอบคุณจาก: LeonJ

หน้า: [1] 2 3 4 ... 17