แสดงกระทู้

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 ... 6
1
เวลาที่เราเปิดรายงานในมุมมองออกแบบ ถ้าเอกสารมีขนาดใหญ่กว่ากระดาษที่เราตั้งค่าไว้ จะมีมุมเขียวแสดงอยู่ที่มุมบนด้านซ้ายแบบนี้


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

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

2
ห้อง 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

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

โค๊ด: [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

4
ผมลองสร้าง รายงานโดย
ที่ตัวรายงานก็ออกแบบโดยใส่ 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

5
จากที่ดู 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

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

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

7
ถ้าใช่วิธีง่ายๆ มีตัวอย่าง 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

8
สวัสดีชาวไท.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

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

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

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

12
ขอบคุณคับจะลองใช้ดูครับ
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

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

14
เรียนทุกท่าน ครับ ผมอยากทราบวิธีการสร้างปุ่มบนฟอร์มให้ สามารถกดแล้ว รายชื่อที่อยู่ใน table มันสุ่มออกมาไม่ซ้ำกันนะครับ
ต.ย. เช่น ผมมี table A มีฟิลด์ id , name พอสร้างฟอร์มแล้วมีปุ่มกด อยากให้ รายชื่อมันวิ่งไปเรื่อยๆ บน textbox แล้วพอเรากดปุ่มอีกทีให้มันหยุดนะครับ
โดยมีข้อแม้ คือ รายชื่อไหนสุ่มออกมาแล้ว ต้องไม่ซ้ำกันครับหากมีการกดสุ่มอีกครั้ง ขอบคุณทุกท่านที่ชี้แนะนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

15
ใช้การสร้างเงือนไข เอาได้ไหมเช่น
สมมุติคอมโบชื่อ comboname และ Option ชื่อ Opt1 ถึง 4

Private Sub ComboName_AfterUpdate()
If Me.ComboName.Value = 1 Then
Me.Opt1 = True
ElseIf Me.ComboName.Value = 2 Then
Me.Opt2 = True
ElseIf Me.ComboName.Value = 3 Then
Me.Opt3 = True
ElseIf Me.ComboName.Value = 4 Then
Me.Opt4 = True
End If
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

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

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