แสดงกระทู้

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 - aek

หน้า: 1 [2] 3
19
อ่านแล้ว งง คำถาม แต่ งง ไปอีก ทำไมอาจารย์เก่งจัง
เดาได้ด้วยว่าเค้าถามอะไร
โพสต์นี้ได้รับคำขอบคุณจาก: aek

20
สนับสนุนการบ่นอีกเสียงครับ

บางคำถามอ่านแล้วได้แต่ถอนใจ
โพสต์นี้ได้รับคำขอบคุณจาก: aek

21
คำถามจำนวนมาก ถามโดยแทบจะไม่อธิบายอะไรมาเลย ไม่ทราบคนถามจะรู้ไหมว่าคนอ่าน(เอาเป็นว่าอย่างน้อยก็ผมแล้วกัน)รู้สึกเหมือนโดนถามว่า "อยากได้จรวดไปดาวอังคาร ช่วยหน่อยครับ" จริงๆนะ แล้วจะให้ตอบอย่างไร ก็จะกลายเป็นต้องถามกลับไปว่า คุณได้ใช้อุปกรณ์อะไร ออกแบบอะไรยังไงไปแล้วบ้าง เอามาให้ดูหน่อย ซึ่งถ้าเป็นสมัยก่อน ผมก็จะพยายามถามกลับ แต่ยอมรับว่าเดี๋ยวนี้ โอกาสน้อยที่ผมจะถามกลับแล้ว ถ้าอ่านแล้วพบว่าข้อมูลที่ให้มาพร้อมคำถามของผู้โพสนั้นมีน้อยมาก ก็จะข้ามไปเลย หรือถามแล้วอ่านไม่เข้าใจเลย ผมก็ขอข้ามไปเหมือนกัน

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

ถามยาว โอกาสได้รับคำตอบเร็วมีสูง -- ถามสั้น โอกาสน้อยลง -- ถามสั้นมากๆ ยากที่จะมีโอกาส
โพสต์นี้ได้รับคำขอบคุณจาก: aek

22
ลองดูที่นี่ครับ ไม่รู้ช่วยได้หรือป่าวนะ
โพสต์นี้ได้รับคำขอบคุณจาก: aek

23
ยินดีครับ thai access บอร์ดแห่งการแชร์ประสบการณ์ การแบ่งปันและการเรียนรู้ครับ ผมเริ่มจากไม่เป็นเลยได้เรียนรู้จากบอร์ดนี้แหละครับ จนพอที่จะแนะนำได้บ้าง :meaw:
โพสต์นี้ได้รับคำขอบคุณจาก: aek

24
ลองดูตัวอย่างนี้ดูครับ
โค๊ด: [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

25
กำหนดให้ 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

26
ลอง
text3= textbox1 & CStr(textbox2)
โพสต์นี้ได้รับคำขอบคุณจาก: aek

27
ห้อง MS Access / : สอบถามคำสั่ง Docmd.Movesize
« เมื่อ: 10 ม.ค. 62 , 16:00:35 »
ได้แล้วครับ ขอบคุณคุณปิ่นณรงค์ที่แนะนำการปรับฟอร์มให้พอดีกับหน้าจอครับ ถ้าฟอร์มที่ต้องการ move ไม่พอดีกับจอที่จะให้ออก มันจะไม่ move ให้ ส่วนการใส่ค่าฟอร์มของผมใส่ 30000 ตามที่บอก ใช้ได้เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: aek

28
ห้อง MS Access / : สอบถามคำสั่ง Docmd.Movesize
« เมื่อ: 10 ม.ค. 62 , 14:40:03 »
ที่ คุณสมบัติฟอร์ม FrmDbLine2_Eng1
เป็นแบบนี้หรือยังครับ


ใส่เป็น

  DoCmd.MoveSize 30000, 0, 0, 0

เลยครับ  :cool: :cool:
โพสต์นี้ได้รับคำขอบคุณจาก: aek

29
1. สร้างฟอร์มกรอกข้อมูลมา 1 ฟอร์ม โดยฟอร์มนี้ไม่ต้องมี Datasource โดยฟอร์มนี้ไม่ต้องใส่ Invoice ID
2. ใส่ปุ่ม Insert Data เข้าไปในตาราง เอาๆว้ในฟอร์มนี้
3. เมื่อคลิกปุ่ม Insert Data ก็ทำการ Generate Invoice ID โดยอ้างอิงจากข้อมูลที่มีอยู่ในตาราง

วิธีนี้ใครคลิกก่อนก็ได้เบอร์ก่อน ยิ่งถ้าใช้ระบบ LAN ในการทำงาน โอกาสจะเกิด Invoice ID ซ้ำแทบเป็นไปไม่ได้ เพราะมี Token Ring เป็นตัวควบคุม
โพสต์นี้ได้รับคำขอบคุณจาก: aek

30
โทษทีที่ตอบช้านะครับ
ลองดูตัวอย่างนี้ ใช้การแสดงจำนวนแล้ว สอบถามผู้ใช้เลยว่า ต้องการนำเข้าข้อมูลเลยหรือไม่ครับ ถ้าตอบใช่ก็จะทำการนำเข้าให้ทันที พร้อมเปลี่ยนนามสกุล เป็น .xxx เมื่อนำเข้าแล้วครับ  ส่วนที่ผมใส่สีแดงไว้คือส่วนที่ต้องแก้ให้ตรงกับ Floder และ ตาราง ที่มีอยู่นะครับ


Private Sub Command0_Click()
    Dim Msg As Integer
    Dim count As Integer
    Dim strPath As String
    Dim strFile As String
         
        strPath = "D:\textfile\"
        strFile = Dir(strPath & "*.txt")
    If strFile = "" Then
    MsgBox "ไม่เจอไฟล์ที่จะ import !!", vbCritical, "แจ้งเตือน"
    Exit Sub
    Else
    Do While strFile <> ""
       count = count + 1
        strFile = Dir()
    Loop

     Msg = MsgBox("พบ File =  " & count & " อัน" & vbCrLf & " ต้องการนำเข้าไฟล์เลยหรือไม่?", vbYesNo+vbQuestion, "จำนวนไฟล์ทั้งหมด")

    If Msg = vbYes Then
    Call Import
    End If
           End If     
End Sub


Sub Import()
    Dim strPath As String
    Dim strFile As String
    Dim strTable As String
    Dim StrFileName As String
    Dim strextensionNew As String
   
    strTable = "Table1"
    strPath = "D:\textfile\"
   
    strFile = Dir(strPath & "*.txt")
   
    Do While strFile <> ""
    StrFileName = strPath & strFile
    DoCmd.TransferText acImportDelim, "", strTable, StrFileName, False
    strextensionNew = Left(StrFileName, InStrRev(StrFileName, ".") - 1) & ".xxx"
    Name StrFileName As strextensionNew
    strFile = Dir
    Loop
End Sub

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

31
คือผมใช้ข้อมูลที่ import มาจาก mapdrive ไว้ บ้างที่ drive เป็น disconnect ผู้ใช้จะไม่ทราบ ทำให้คิดว่าไม่มีข้อมูลใหม้เข้ามา อ.ท่านไหน ที่พอมีแนวทางหรือโค้ดตัวอย่างบ้างไหมครับ

ขอบคุณครับ

 :prettiness: :prettiness: :prettiness:

ปกติคุณจะ Import จาก Mapdrive โดยกำหนดโฟลเดอร์ใน Mapdrive เพื่อที่จะ Import ใช่ไหมครับดูจาก โค้ด import ก่อนหน้านี้ที่เคยสอบถามมา
 ถ้าใช่ เราก็ใช้การ Dir() หาชื่อโฟลเดอร์นั้นเอาก็ได้คับว่าค้นหาเจอไหม
กรณีที่ Mapdrive Disconnect ก็ให้แสดงว่า ไม่สามารถเชื่อมต่อได้
กรณีที่เจอก็ให้แสดงว่า เชื่อมต่อได้ครับ

ผมกำหนดปุ่ม CommandBotton ชื่อ Command0 นะครับ

Private Function MapDriveExists(ByVal Path As String) As Boolean
  On Error Resume Next
  MapDriveExists = Dir(Path, vbDirectory) <> ""
End Function


Sub connectedToMapdrive()
  If MapDriveExists("Z:\MyData\FloderName") Then
   MsgBox "พบการเชื่อมต่อ Mapdrive", vbInformation, "Status"
  Else
    MsgBox "ไม่พบการเชื่อมต่อ Mapdrive ของท่าน" & "....", vbInformation, "Status"
  End If
End Sub


Private Sub Command0_Click()
Call connectedToMapdrive
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: aek

32
ใช้คำสั่ง Call ครับ

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

33
ห้อง MS Access / : อยากทำ progress meter
« เมื่อ: 10 ธ.ค. 61 , 17:14:08 »
ลองดูคลิปนี้นะครับ แต่การแสดง meter มันทำให้เครื่องต้องเสียเวลาแสดงส่วนนี้เพิ่มด้วยทำให้การทำงานช้าลงอีกนะครับ



ปล. มันจะมีอีกอย่างคือ progress meter ที่ Status bar ไม่แน่ใจว่าตั้งแต่ MS Access เวอร์ชั่น 2007 หรือ 2010 ขึ้นไป ก็สามารถเขียนคำสั่งให้มันแสดงความก้าวหน้าได้ ตัวอย่าง

1. สร้างตัวแปร
Dim ReturnValue As Variant
 
2. กำหนด สเกล ให้ เท่ากับ 100
ReturnValue = SysCmd(acSysCmdInitMeter, "Processing ", 100)
 
3. สมมุติเป็นการนับเรคคอร์ดทั้ง ก็ทำให้ เป็น เปอร์เซนต์
For StartLoop = 0 To (TotalRecord - 1)
      ReturnValue = SysCmd(acSysCmdUpdateMeter, ((StartLoop) / TotalRecord) * 100)
Next StartLoop
 
4. เคลียร์
ReturnValue = SysCmd(acSysCmdRemoveMeter)

อะไรประมาณนี้ครับ ปรับใช้ดู

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

34
ไฟล์ที่แนบมาแตกไฟล์ไม่ได้ครับคุณปิ่นณรงค์

ปกติผม แตกไฟล์กับ 7zip ครับลองดูอันใหม่ครับว่าได้ไหม
โพสต์นี้ได้รับคำขอบคุณจาก: aek

35
เพิ่มนิดนึงประมาณนี้ครับ เพิ่ม CODE ให้เมื่อ Dir มาแล้ว Import เข้าไปในตารางแล้วก็ให้แก้นามสกุลไฟล์นั้นเป็น .XXX ก่อนจึงจะไป Dir อันใหม่มา Import ต่อ

Private Sub import_Click()
    Dim strPath As String
    Dim strFile As String
    Dim strTable As String
    Dim StrFileName As String
    Dim strextensionNew As String

    strTable = "Table1"
    strPath = "D:\textfile\"
    strFile = Dir(strPath & "*.txt")
    If strFile = "" Then
    MsgBox "ไม่พบไฟล์ที่จะ Import !!", vbCritical, "แจ้งเตือน"
    Exit Sub
    End If
    Do While strFile <> ""
    StrFileName = strPath & strFile
    DoCmd.TransferText acImportDelim, "", strTable, StrFileName, False
   
    strextensionNew = Left(StrFileName, InStrRev(StrFileName, ".") - 1) & ".xxx"
   
   
   
    Name StrFileName As strextensionNew
    strFile = Dir
    Loop
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: aek

36
ถ้าแบบ Single  อาจจะใช้การดึงข้อมูลมาแสดงโดยใช้ DLOOKUP ก็ได้คับ
หรือท่านอาจจะสร้างฟอร์มอีกฟอร์มเพื่อใช้แสดงข้อมูล Import ทั้งหมดที่มี แบบ continuous form แล้วกดเลือก Record ที่ต้องการมาแสดงที่ฟอร์มหลักที่เป็น Single ก็น่าจะสะดวกดีนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: aek

หน้า: 1 [2] 3