แสดงกระทู้

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 5 6
37
ลองดูโพสนี้ครับ
https://www.thai-access.com/index.php?topic=331.msg1345#msg1345
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

38
ผมต้องการให้เวลาที่เราติ๊กเช็คบ๊อก ตรงฟิล จำนวน ให้มันส้รางเลขขึ้นมาตามจำนวน Row ครับ
ใน Report มีฟังจะชั่น Running Sum สามารถทำได้ง่ายๆ



แต่ใน Form มันไม่มีอะครับ



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

39
ที่ Cell A3 ใส่ IF เข้าไป
เช่น

=IF(A1>A2,"กำไร",IF(A1<A2,"ขาดทุน"))

แต่ฝากให้คิดเพิ่มนะครับ กรณี A1 และ A2 เท่ากันจะให้แสดงว่าอะไร  :miao:
สมมุติว่ามีก็จะใส่แบบนี้ได้เลย

=IF(A1>A2,"กำไร",IF(A1<A2,"ขาดทุน",IF(A1=A2,"เสมอตัว")))
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

40
รบกวนขอไฟล์ตัวอย่างไว้ศึกษาเพื่อเป็นความรู้ค่ะ
ไฟล์ตัวอย่างที่คุณ Maki โพสไว้นั้น โหลดไปแล้วเปิดไม่ได้ค่ะ(ไฟล์เสีย)
ใช้ โปรแกรม 7-Zip แตกไฟล์ครับ

https://www.7-zip.org/
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

41
ขอบคุณ อ. ทุกท่านมากๆเลยคะ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

42
แก้โค้ดตรงนี้ครับ จะบันทึกได้ปกติ

โค๊ด: [Select]
Private Sub BtnSave_Enter() 'ปกติเมื่อแสกน Barcode แล้วเครื่องจะมีระบบ Enter อัตโนมัติ คำสั่งนี้จะทำงานเองทันที คือบันทึกลงตาราง
Dim strBarcode As String
On Error Resume Next
strBarcode = Forms!FrmStart_Working!Barcode
strBarcode = Replace(strBarcode, " ", "")
Barcode = strBarcode
If IsNull(DLookup("EmpName", "tblEmployee", "EmpID='" & Forms!FrmStart_Working!Barcode & "'")) Then
Me.Lb_Status.Caption = "ไม่พบข้อมูลพนักงานคนนี้กรุณาลงทะเบียนก่อน"
Me.Barcode.SetFocus
Me.Undo
Else
Me.txtTimeIn = Format(Now(), "HH:mm:ss AM/PM")
Me.txtNameEmployee = DLookup("EmpName", "tblEmployee", "EmpID='" & Forms!FrmStart_Working!Barcode & "'")
Call SaveRecord
Me.Lb_Status.Caption = "บันทึกข้อมูลเสร็จเรียบร้อย"
Me.Barcode.SetFocus
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

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

45
หนูใช้เครื่องอ่านบัตร กับโปรแกรม Siam id รับค่าลง Access ได้ปกติ
(ลงใน textbox)
แต่ เลขประชาชน 13 หลักจะเข้ามาแบบ 1 2222 33333 11 1จะมีเว้นวรรค
อยากให้มันมาแบบ ติดๆกัน 1222233333111 แบบนี้คะ พอมีวิธีบ้างไหม

ตั้งค่าจากเครื่องผมไม่ทราบนะครับ รออาจารย์ท่านอื่นมาเสริม

แต่ถ้าแก้แบบง่ายๆ คือสรา้งตัวแปลมาเก็บค่า และแก้ไขก่อนให้แสดงบน textbox ชื่อ txtPersonalID เช่น
Dim strPersonalID as string
strPersonalID = ค่าที่มาจากเครื่องแสกน
strPersonalID = Replace([strPersonalID]," ","")
txtPersonalID = strPersonalID

หรือวิธีอื่นๆ เช่นใช้คิวรี่ก็ใส่ Replace([strPersonalID]," ","") ได้เลยครับ

วิธีนี้ใช้การ Replace ช่องว่างให้ ไม่มีช่องว่างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

46
หนูใช้เครื่องอ่านบัตร กับโปรแกรม Siam id รับค่าลง Access ได้ปกติ
(ลงใน textbox)
แต่ เลขประชาชน 13 หลักจะเข้ามาแบบ 1 2222 33333 11 1จะมีเว้นวรรค
อยากให้มันมาแบบ ติดๆกัน 1222233333111 แบบนี้คะ พอมีวิธีบ้างไหม

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

47
หนูมีคิวรี่อยู่1ตัวนะคะ สมมติมีอยู่2คอลั่มคือ Exp1 กับ Exp2 ค่ะ

Exp1 ผูกกับตารางข้อมูลเป็นtext เก็บขัอมูล yes กับ no
ส่วน Exp2 นั้นไม่ได้ผูกกับตารางใดๆ

ความต้องการของหนูในการแสดงคิวรี่ก็คือ
เมื่อข้อมูลในExp1 เป็น yes ให้แสดงข้อความใน Exp2 ว่า "สินค้าพร้อมส่ง"
แต่หากข้อมูลในExp1 เป็น no ก็ให้แสดงข้อความใน Exp2 ว่า "สินค้าหมดแล้ว"
ประมาณนี้ค่ะอาจารย์ ขอรบกวนด้วยนะคะ
หนูต้องการเอาคิวรี่นี้ไปสร้างเป็นรายงานต่อค่ะอาจารย์

ในคิวรี่ใส่ SQL แบบนี้ได้เลยกรณีที่เก็บข้อความ Yes กับ No โดยอยู่ในตารางชื่อ Table1
โค๊ด: [Select]
SELECT IIf([Exp1]="yes","สินค้าพร้อมส่ง") & IIf([Exp1]="NO","สินค้าหมดแล้ว") AS Exp2, *
FROM Table1;

กรณีที่เก็บข้อมูลโดยใช้ Checkbox เก็บ Yes No ในคิวรี่ใส่แบบนี้
โค๊ด: [Select]
SELECT IIf([Exp1]=True,"สินค้าพร้อมส่ง") & IIf([Exp1]=False,"สินค้าหมดแล้ว") AS Exp2, *
FROM Table1;
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

48
ต้องเช็คผลจากฟังก์ชั่นก่อนด้วยสิครับ ถึงจะบอกได้ว่ามีหรือขาดฟอนท์นั้น


Private Sub Command0_Click()
    If Not CheckFont ("Angsana New") Then
       MsgBox "ไม่มีฟอนต์นี้ในระบบ"
    End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

49
https://www.thai-access.com/index.php?topic=370.msg1542#msg1542
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

50
ห้อง MS Access / : access 2003 to windows 10 64 bit
« เมื่อ: 02 พ.ย. 62 , 13:57:07 »
สร้างโมดูล แล้วใส่โค้ดข้างล่างนี้ เวลาเรียกใช้ ก็แค่สั่ง setdate เท่านั้น  โค้ดมีความแตกต่างนิดหน่อยจากโค้ดของคุณ nonc31 นะครับ คือไม่มีการเช็ค compiler directive VBA7 เพราะ VBA7 ไม่ได้เป็นการเช็คว่าระบบเป็น 32 หรือ 64 bit  ถ้าจะเช็คต้องใช้ compiler directive Win64  แต่ยังไงก็ตาม API 3 ตัวนี้ไม่มีความจำเป็นต้องเช็ค เพียงแค่ตบแต่งบางอย่าง ก็จะใช้ได้ทั้ง 32 และ 64 bit แต่ใช้สำหรับ Access 2007 หรือสูงกว่าเท่านั้นนะครับ

เนื่องจากว่า ผมเข้าใจว่าการเรียกใช้ API ทั้ง 3 ตัวนี้ ถูกเรียกจาก procedure setdate เท่านั้น ดังนั้นไม่จำเป็นต้องกำหนดเป็น Pubic ที่คำสั่ง Declare ก็ได้ แต่ใส่ไว้ที่ procedure setdate ที่เดียวก็ได้ครับ

ยังไงก็ตาม ผมลองโค้ดนี้ในเครื่องของผมตอนนี้ จะไม่ได้ผลทันที ต้องปิด Access แล้วเข้าใหม่  ส่วนที่แสดงเวลาบนหน้าเดสก์ท็อปเองก็ไม่เปลี่ยน แต่ฟอร์แมทภายในเปลี่ยน ไม่ทราบเหมือนกันว่าเป็นเพราะอะไร

โค๊ด: [Select]
Option Compare Database
Option Explicit

Private Const LOCALE_SSHORTDATE = &H1F
Private Const WM_SETTINGCHANGE = &H1A
Private Const HWND_BROADCAST = &HFFFF&

Declare PtrSafe Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
Declare PtrSafe Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As Long
Declare PtrSafe Function GetSystemDefaultLCID Lib "kernel32" () As Long

Public Function setdate()
    Dim dwLCID As Long
   
    dwLCID = GetSystemDefaultLCID()
    If SetLocaleInfo(dwLCID, LOCALE_SSHORTDATE, "dd/MM/yyyy") = 0 Then
        MsgBox "ผิดพลาด", vbCritical, "Error"
        Exit Function
    End If
   
    PostMessage HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0
End Function
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

51
ห้อง MS Access / : access 2003 to windows 10 64 bit
« เมื่อ: 01 พ.ย. 62 , 13:43:19 »
สร้าง Module ขึ้นมา 1 ตัว แล้วแทนที่จะใส่ Private Declare PtrSafe ... ก็ใส่เป็น Public Declare PtrSafe ... แทนครับ วางไว้ที่เดียว จะได้เรียกใช้จากที่ไหนก็ได้
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

52
API (Application Program Interface)  เป็นชื่อเรียกรวมๆของฟังก์ชันที่ระบบสร้างไว้ให้ผู้พัฒนาโปรแกรมเขียนโค้ดไปเรียกใช้เพื่อสั่งให้ระบบทำงานต่างๆ เพราะภาษาที่เราใช้เขียนโปรแกรมนั้นไม่ว่าจะภาษาอะไรก็ตาม ไม่สามารถสร้างฟังก์ชันเอาไว้ให้ทำได้ทุกอย่างที่ต้องการ  ถ้าเป็น API ของระบบวินโดวส์ เรียกเต็มๆก็คือ Windows API แต่ก็มักเรียกสั้นๆว่า API   ดังนั้นก็ต้องเข้า VBA Editor แล้วกด Ctrl-F เพื่อค้นหาชื่อ API ที่เรา Declare เอาไว้ทีละตัว ว่ามันอยู่ที่ไหนในโค้ดบ้างเท่านั้นเองครับ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

53
ห้อง MS Access / : access 2003 to windows 10 64 bit
« เมื่อ: 18 ต.ค. 62 , 12:04:31 »
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

54
ห้อง MS Access / : access 2003 to windows 10 64 bit
« เมื่อ: 16 ต.ค. 62 , 20:41:08 »
ได้เลยครับคุณมาลี  เพราะผมเขียนโค๊ดด้วย 2003 32บิต (VBA 6.3) ให้ใช้กับ 2013 64บิต (VBA 7.1)
ก่อนหน้านี้ก็คิดหนักอยู่ครับ  โค๊ดมันจะ Error ตรงการเรียกใช้ API ของวินโดว์เท่านั้นล่ะ
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

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