แสดงกระทู้

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

หน้า: 1 [2] 3 4 5 ... 7
19
=IIf([หมู่ที่]="-"," ",IIf([หมู่ที่]<>"","ม."&[หมู่ที่],""))
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

20
ขอบคุณมากครับ ทำได้แล้วครับ
 :nice day: :nice day: :nice day: :in love: :in love: :in love:
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

21
ห้อง MS Access / : ขอเพิ่มโค๊ตค้นหา
« เมื่อ: 24 ส.ค. 64 , 20:19:10 »
ไฟล์ตัวอย่างครับ
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

22
เวลาที่เราเปิดรายงานในมุมมองออกแบบ ถ้าเอกสารมีขนาดใหญ่กว่ากระดาษที่เราตั้งค่าไว้ จะมีมุมเขียวแสดงอยู่ที่มุมบนด้านซ้ายแบบนี้


วิธีการแก้ปัญหามีหลายแบบ เลือกตามความเหมาะสม
1. เปลี่ยนขนาดกระดาษเช่น A4 เป็น A3
2. ดึงขอบกระดาษด้านซ้ายให้หน้ากระดาษแคบลง
3. ปรับตำแหน่งของคอนโทรลต่างๆ ให้กระชับ แล้วค่อยปรับขนาดกระดาษในข้อ 2

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

23
ห้อง MS Access / : Random ข้อมูล
« เมื่อ: 24 พ.ค. 64 , 09:54:46 »
ถ้าใช้การสร้างปุ่มแทนได้ไหมครับ
สมมุติมีตารางตารางชื่อ table1 เก็บข้อมูลตามในรูปของคุณ
ที่ปุ่มใส่โค๊ดนี้เข้าไปครับ


Private Sub Command1_Click()
Dim rstRandom As Recordset
Dim rstOut As Recordset
Set rstRandom = CurrentDb.OpenRecordset("SELECT Table1.TCC, Rnd(Val(Right([TCC],3))) AS ID FROM Table1 ORDER BY Rnd(Val(Right([TCC],3)));", dbOpenDynaset)
Set rstOut = CurrentDb.OpenRecordset("table1", dbOpenDynaset)

rstRandom.MoveFirst
rstOut.MoveFirst
Do Until rstRandom.EOF
rstOut.Edit
rstOut!TCCRANDOM = rstRandom!TCC
rstOut.Update
rstRandom.MoveNext
rstOut.MoveNext
Loop
End Sub

วิธีนี้ใช้ ฟังชั้น RND() เพื่อสุ่มข้อมูลที่ต้องการ แล้วนำไปวางสุ่มในฟิลล์ที่ต้องการครับ
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

24
ลองสร้างปุ่มขึ้นมาแล้วเอาโค้ดไปวางดูนะครับ

โค๊ด: [Select]
Private Sub Command0_Click()
Dim RecCount As Integer
Dim i, x As Long
Dim rst As dao.Recordset
RecCount = DCount("*", "TempToPrint")

Set rst = CurrentDb.OpenRecordset("TempToPrintWithStickerNo", dbOpenDynaset)
rst.MoveFirst

Do Until rst.EOF Or rst.BOF
For i = 0 To (RecCount - 1)

If i = 0 Then
x = 1
End If

rst.Edit
rst!stickerNo = x
rst.Update

rst.MoveNext
x = x + 1
If x > 52 Then
x = 1
End If

Next i
Loop
End Sub

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

25
ผมลองสร้าง รายงานโดย
ที่ตัวรายงานก็ออกแบบโดยใส่ Textbox ไว้ 56 อัน โดยสามารถตั้งชื่อไว้เช่น

L1C1   L1C2    L1C3    L1C4
L2C1   L2C2    L2C3    L2C4
L3C1   L3C2    L3C3    L3C4
...............................L14C4


และในEvent Report_Load ผมใส่โค้ดเข้าไป
โค๊ด: [Select]
Private Sub Report_Load()
Dim rst As dao.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT [56].l_details, [56].LandC, [56].Print FROM 56 WHERE ((([56].Print)=True));", dbOpenDynaset)
   
    rst.MoveFirst
    Do Until rst.EOF
    If Not IsNull(rst!LandC) Then
    Me(rst!LandC) = rst!l_details
    End If
        rst.MoveNext
    Loop
   
End Sub
โดยเรากำหนด Recordsource ให้เอาเฉพาะ ข้อมูลที่ Print = true หรือถูกติ๊กเลือกอยู่มาเท่านั้น
และใช้ If กำหนด ว่าถ้า LandC นั้นมีอยู่
ก็ให้ textbox  Me(rst!LandC) ที่มีชื่อเหมือนกับ LandC ของตารางนั้นนำค่า l_details ลงไปแสดงที่ textbox นั้น

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

26
จากที่ดู LINE X และ COLUMN X เป็นตัวระบุ ตำแหน่งแนวตั้งและแนวนอนของ RecordSorce นั้น

วิธีการที่ให้แสดงเฉพาะ l_details ที่ Print = Yes นั้นสามารถทำได้ครับ ส่วนที่ Print = No ก็ให้ข้ามการแสดงไป
ใช้การ Loop Check ค่าและสั่งให้ไปแสดงในtextbox ที่เราตั้งชื่อเรียงไว้ ตั้งแต่ 1 - 56 ครับ
และที่ตัวรายงานก็ออกแบบจำนวนช่องไว้ทั้ง 56 ช่อง โดยสามารถตั้งชื่อไว้เช่น

L1C1   L1C2    L1C3    L1C4
L2C1   L2C2    L2C3    L2C4
L3C1   L3C2    L3C3    L3C4
...............................L14C4

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

27
ผมแปะลิงค์ช่องยูทูปของอาจารย์ TTT ใว้ใน กล่องข่าวด้านบน กับ แหล่งความรู้ & ประชาสัมพันธ์ ด้านล่างกดตามเข้าไปดูกันได้เลยครับผม :yuush:

หรือกดลิงค์จากที่นี่เลยก็ได้ครับ ->> ช่องยูทูปเรียนรู้การพัฒนาซอฟแวร์ฐานข้อมูล MS Access ด้วยตัวเอง By อ.TTT(Access-Creator)
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

28
โปรแกรมนี้ใช้ไงครับ
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

29
ไม่รู้ว่าใช่ Version ที่ต้องการหรือเปล่า
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

30
โจทย์เดียวกันกับกระทู้นี้นะครับ https://www.thai-access.com/index.php?topic=1614.msg7017#msg7017
คำตอบ
โค๊ด: [Select]
Private Sub Select_AfterUpdate()
    CurrentDb.Execute "UPDATE RssmNew_filter SET complete = " & Me.Select & " WHERE เลขที่ใบเบิก = '" & Me.IDNumber & "'", dbFailOnError
    Me.Recalc
End Sub

ชุดคำสั่งที่จะนำไปใช้ก็แก้ให้ตรงกับของท่านดังนี้
Private Sub "ชื่อปุ่ม Input"_Click()
   RssmNew_filter--> ชื่อตารางหรือคิวรี่ที่ซัพฟอร์มดึงมา
   Me.IDNumber--> ชื่อกล่องข้อมูลบนฟอร์มหลักที่ใช้กรองข้อมูลซัพฟอร์ม(จากภาพท่านกรองจากกล่อง Iso No. ใช่หรือไม่?)
เลขที่ใบเบิก--> ชื่อฟิวล์ในตารางซัพฟอร์มที่รับคำสั่งกรองมาจากข้อบน ^^^^^
Me.Select--> me.cmb_package(ชื่อกล่องที่ต้องการดึงบนหน้าฟอร์ม)
complete--> j_testloop(ชื่อฟิวล์ในตารางที่ต้องการให้นำข้อมูลมาวาง)
End Sub

ปล.อัพเดทอัพไฟล์ตัวอย่างกระทู้เก่าให้แล้วนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

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

32
ลองดูครับ
อุตส่าห์อธิบายโจทย์ขนาดนี้พยายามทำให้ละกัน  :cool:

ขอสอบถามเพิ่มได้ไหมครับ

หากผมต้องการให้ตรงส่วน "กรอกข้อมูลผู้ป่วยจากการซักประวัติ" มีการเช็คก่อน INSERT ลงตาราง tblDiseaseEmp
ว่าข้อมูลที่กรอกทั้งจาก textbox txtEmployeeID ทั้งสาม และทั้งจาก textbox txtDisease ทั้งสาม นั้นซ้ำกับข้อมูลในตาราง tblDiseaseEmp ที่มีอยู่ก่อนแล้วหรือไม่
(หากซ้ำทั้งคู่ไม่ให้ INSERT แต่หากไม่ซ้ำทั้งคู่หรือซ้ำแค่ฝั่งใดฝั่งหนึ่งสามารถ INSERT ลงไปได้ เพราะตารางใช้ Composite Key)

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


รบกวนอีกครั้งนึงนะครับ

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

33
ถ้าใช่วิธีง่ายๆ มีตัวอย่าง 2 แบบ
ในการตรวจเช็คก็คือ เช็คว่ามีตัวเลขเหล่านี้ทั้ง 3 ตัวหรือไม่ (เหมือนเช็คว่าใช่ตัวสลับหรือไม่  :shout:)

ถ้าใช้ textbox ในการตรวจสอบ 2 textbox ก็จะใช้โค้ดแบบนี้
สมมุติ textbox ใช้ในการกรอก ชื่อ InputTextbox
textbox ที่แสดงตัวเลขเริ่มต้นไว้ตรวจสอบชื่อ  targetTextbox
โค๊ด: [Select]
Dim InputNum, TargetNum As Long
Dim Num1, Num2, Num3, Num4, Num5, Num6 As Integer
Dim Digit1, Digit2, Digit3 As Long

InputNum = Trim(Me.InputTextbox)
TargetNum = Trim(Me.targetTextbox)
Digit1 = Left(InputNum, 1)
Digit2 = Mid(InputNum, 2, 1)
Digit3 = Right(InputNum, 1)

Num1 = Digit1 & Digit2 & Digit3
Num2 = Digit1 & Digit3 & Digit2
Num3 = Digit3 & Digit2 & Digit1
Num4 = Digit3 & Digit1 & Digit2
Num5 = Digit2 & Digit1 & Digit3
Num6 = Digit2 & Digit3 & Digit1

If Num1 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num2 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num3 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num4 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num5 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
ElseIf Num6 = TargetNum Then
MsgBox "ท่านถูกรางวัล"
Exit Sub
Else
MsgBox "ท่านไม่ถูกรางวัล้"
End If


ส่วนถ้าจะนำไปใช้กับคิวรี่ให้ทำแบบนี้

1.นำโค้ดนี้ไปวางใน Module
โค๊ด: [Select]
Public Function MyCheck(FieldTarget As Integer, FieldInput As Integer) As String
Dim InputNum, TargetNum As Long
Dim Num1, Num2, Num3, Num4, Num5, Num6 As Integer
Dim Digit1, Digit2, Digit3 As Long
Dim Result As String
InputNum = Trim(FieldInput)
TargetNum = Trim(FieldTarget)
Digit1 = Left(InputNum, 1)
Digit2 = Mid(InputNum, 2, 1)
Digit3 = Right(InputNum, 1)

Num1 = Digit1 & Digit2 & Digit3
Num2 = Digit1 & Digit3 & Digit2
Num3 = Digit3 & Digit2 & Digit1
Num4 = Digit3 & Digit1 & Digit2
Num5 = Digit2 & Digit1 & Digit3
Num6 = Digit2 & Digit3 & Digit1

If Num1 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num2 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num3 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num4 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num5 = TargetNum Then
Result = "ท่านถูกรางวัล"

ElseIf Num6 = TargetNum Then
Result = "ท่านถูกรางวัล"
Else
Result = "ท่านไม่ถูกรางวัล"
End If
MyCheck = Result
End Function

2.สมมุติตารางมี Field F1 คือฟิลล์ผลออก
                    Field F2 คือฟิลล์ที่เราระบุ
SQL ก็จะได้แบบนี้
โค๊ด: [Select]
SELECT IIf(Not IsNull([F2]),Mycheck([F1],[F2]),Null) AS ตรวจ, *
FROM Table1;


เวลาเรียกใช้ฟังชั้น ก็ให้ใส่ ตรวจ: IIf(Not IsNull([F2]),Mycheck([F1],[F2]),Null) เข้าไปครับ

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

34
สวัสดีชาวไท.Access ทุกท่านครับ ปกติเว็บเราจะมีการเปลี่ยนฉายาสมาชิกจาก"พลังขอบคุณ"(https://www.thai-access.com/index.php?topic=42.msg920#msg920)
อัพเดทให้เหรียญตามจำนวนของพลังขอบคุณที่ท่านนั้นได้รับมาครับ  :fake smile:

ตารางเหรียญจากพลังขอบคุณ :love:
พลังขอบคุณ 10 30 50 100 150
เหรียญ
พลังขอบคุณ 200 300 400 600 800
เหรียญ
พลังขอบคุณ 10001300160020002500
เหรียญ
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

35
ขอแจก โปรแกรมด้วยได้ไหมครับ
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

36
ขอบคุณมากๆเรยนะคะ  :love:
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

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