แสดงกระทู้

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 - Eik Q Sang

หน้า: 1 2 3 [4]
55
คือผมต้องการสร้างปุ่มไว้ Random ฟิวในเทเบิ้ลที่เป็น Text ต้องเขียนโค้ดอย่างไรบ้างครับ ขอบคุณมากครับผม

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

ตัวอย่าง Code
Private Sub Command16_Click()
Randomize
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("table1", dbOpenDynaset)
With rs
If .EOF Then
MsgBox "ไม่พบข้อมูลในตารางที่ระบุ!!", vbOKOnly, "ระบบเช็คข้อมูล"
Else
.MoveLast
.AbsolutePosition = CLng(Rnd() * .RecordCount)
Me.text1 = !factory
End If
.Close
End With
Set rs = Nothing
End Sub

หมายเหตุ
table1 คือ ชื่อตารางที่ต้องการ Random
text1 คือ ชื่อ textbox ที่ต้องการแสดงผลการ Random
Factory คือชื่อ Field ในตารางที่ต้องการ นำมา Random
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

56
จากข้อมูลแล้ว
น่าจะมีการสร้างตาราง ความสัมพันธ์ประมาณนี้ครับ



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

57
Report Header/Footer Section จะแสดงครั้งเดียว ถ้าแสดงทุกหน้าต้องใช้ Page Header/Footer Section แทนครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

58
ไม่ต้องไปนั่งไล่ลบทุกตัวที่ขึ้นต้นด้วย tblData หรอกครับ ลบแค่ตัวเดียวก่อนทำ Import ก็เพียงพอแล้ว   โดยที่ถ้าไม่มีเทเบิล tblData มาก่อน หรือว่าลบ tblData ได้ตามปกติ โปรแกรมก็จะ Import ไฟล์ Excel เข้ามา แต่ถ้าลบเทเบิลไม่ได้ ก็จะแสดงข้อผิดพลาดออกมาให้เห็นแทน

On Error Resume Next
DoCmd.DeleteObject acTable, "tblData"
If Err.Number > 0 and Err.Number <> 7874 Then
   Msgbox "ลบเทเบิล tblData ไม่ได้ เกิดข้อผิดพลาดรหัส " & Str$(Err.Number) & " " & Err.Description
   Exit Sub หรือ Exit Function
End If
On Error Goto 0
DoCmd.TransferSpreadsheet acImport  ...  <<< เข้าใจว่านี่คงเป็นคำสั่งเดิมในการนำเข้าไฟล์ Excel

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

59
เป็นผมจะสร้างรหัสที่เก็บเป็น A11926
A - Zone
11 - Cabinet
9 - Shelf
26 - Sequence

แค่นี่้ก็สามารถใช้ Query หาข้อมูลต่างๆได้แล้ว
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

60
ตัวอย่างไฟล์อันใหม่โพสเดิมด้านบนนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

61
จากข้อมูลเทเบิ้ลมีรายละเอียดดังนี้
Code          Status        Final
001                A
001                D
001                D
002                A
003                D
004                P
004                A
005                C
005                D
005                D
ถ้าผมจะคิวรี่โดยมีเงื่อนไขดังนี้
ถ้า ฟิลด์ Code - 001 มี Status A กับ C กับ D ให้อัพเดทในฟิลด์ Final เป็น A
ถ้า ฟิลด์ Code - 001 มี Status A อย่างเดียว ให้อัพเดทในฟิลด์ Final เป็น A
ถ้า ฟิลด์ Code - Code 001 มี Status A กับ D ให้อัพเดทในฟิลด์ Final เป็น A
ถ้า ฟิลด์ Code - 001 มี Status D อย่างเดียว ให้อัพเดทในฟิลด์ Final เป็น D
ถ้า ฟิลด์ Code - Code 001 มี Status C กับ D ให้อัพเดทในฟิลด์ Final เป็น D
ถ้า ฟิลด์ Code - Code 001 มี Status P กับ D ให้อัพเดทในฟิลด์ Final เป็น P

ต้องคิวรี่อย่างไรบ้างครับ ขอบคุณมากครับผม

ลองดูตัวอย่างนี้นะครับ
ผมใช้วิธีสร้าง CrossTab ขึ้นมาก่อนเพื่อ ต้องการดูว่า Field ไหน มีข้อมูลอยู่บ้าง
ต่อไปใช้ IIF Function  กำหนดเงื่อนไขเพื่อหาผลลัพท์
เมื่อได้ผลลัพท์มาแล้ว จากที่เราจะอัพเดทลงในตารางเดิม ก็สร้างตารางใหม่ขึ้นมาเลย


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

62
 :vomit: ใจเย็นๆครับผู้ตอบมีไม่กี่ท่าน  :cool:
เมื่อ Status  |  ให้ Final
AA
A,DA
A,C,DA
DD
C,DD
P,DP

อืมเห็น Code - 004 มี Status A กับ P จะให้ Final เป็นอะไรครับ :want:

ปล.แค่มาช่วยถามนะ ไม่ได้ช่วยหาคำตอบ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

63
มันมีหลายแบบทั้ง Tahoma MS Sans Serif Arial Verdana และอื่นๆ แต่ส่วนตัวผมใช้ Arial  เพราะฟ้อนพวกนี้ มีทุกเครื่อง และใช้ได้ทั้งไทยและอังกฤษครับ เรื่องขนาด แล้วแต่การออกแบบครับ :cool: :grin:
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

64
ห้อง MS Access / > การเพิ่มเงื่อนไข SQL ค่ะ
« เมื่อ: 05 เม.ย. 61 , 18:10:57 »
สร้างคิ่วรี่ใหม่ ใส่ sql ตามนี้
โค๊ด: [Select]
SELECT StockMonthlyOld.ItemID, StockMonthlyOld.Name, StockMonthlyOld.Type, StockMonthlyOld.Date, StockMonthlyOld.QtyReceived, StockMonthlyOld.Task
FROM StockMonthlyOld LEFT JOIN StockMonthlyOld AS StockMonthlyOld_1 ON StockMonthlyOld.ItemID = StockMonthlyOld_1.ItemID
GROUP BY StockMonthlyOld.ItemID, StockMonthlyOld.Name, StockMonthlyOld.Type, StockMonthlyOld.Date, StockMonthlyOld.QtyReceived, StockMonthlyOld.Task
HAVING (((Count(StockMonthlyOld_1.Task))<>0));
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

65
ผมได้สร้างตารางการยืมสมุด ซึ่งในตาราง Table1 ประกอบด้วย NameBorrow,DateDeadline ซึ่งผมได้สร้างคิวรี่การยืมเกินกำหนด ชื่อ qryOverdue โดยนำตาราง Table1 มาแสดงในคิวรี่และได้เพิ่มฟิลด์ Overdue: [DateDeadline]-Date()
คำถาม คือ ผมต้องการจะสร้าง Report โดยมี Combo Box ซึ่งมีลิสต์ให้เลือก ระหว่าง ไม่ถึงกำหนดคืน กับ เกินกำหนดคืน จะมีวิธีการอย่างไรบ้างครับ เพื่อให้รีพอตออกมาแบบนี้ครับ ขอบคุณมากครับ

ผมว่าตรง [DateDeadline]-Date()  เปลี่ยนเปนหาว่า เกินกำหนดคืน หรือยังดีกว่านะครับ
ซึ่งเราอาจจะใช้ฟังชั่น IIF เช่น
โค๊ด: [Select]
CheckOverdue: IIf([Datedeadline]>Date(),"ไม่เกินกำหนดคืน","เกินกำหนดคืน")ที่ช่อง Criteria ของ CheckOverdue ดังนี้
โค๊ด: [Select]
[Forms]![Form1]![CheckOverdue]แล้วสร้างฟอร์ม มา 1 form ผมตั้งชื่อว่า Form1 กับ ComboBox ชื่อ CheckOverdue โดย มี List ไม่เกินกำหนดคืน กับ เกินกำหนดคืน
แล้วกด ปุ่ม เพิ่มเปิดรายงานขึ้นมา

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

66
ให้เช็คการวาง control พวก Combobox textbox หรืออื่นๆ ไว้ที่ ส่วนหัวของฟอร์มหรือเปล่า เพราะถ้าเป็น ฟอร์มแบบ Continuous Forms ข้อมูลต้องอยู่ในส่วนรายละเอียด ห้าม เอา Control ตัวใดไปวางไว้ที่ส่วนหัวของฟอร์ม
เพราะ สาเหตุพวกนี้อาจจะทำให้เกิด error เมื่อ กดลบเรคคอร์ดถัดไปได้
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

67
เข้าใจว่าคงไม่อยากแก้ไขหน้ารายงาน สิ่งที่พอนึกได้คือต้องไปดูก่อนว่าเครื่องพิมพ์มีคุณสมบัติให้ย่อ/ขยายสิ่งที่จะพิมพ์ได้หรือไม่ ซึ่งอาจทำผ่านหน้าจอ LED บนตัวเครื่องพิมพ์เองเลยถ้ามี หรือจะผ่านไดรเวอร์ใน Control Panel ก็แล้วแต่  ถ้าทำได้ก็ค่อยมาทดสอบโดยตั้งขนาดกระดาษของรายงานใน Access ให้ใหญ่เกินข้อมูลที่จะพิมพ์ไปเลย จุดประสงค์คือจะไม่ให้มีการแสดงผลลัพธ์ที่เราเห็นใน Preview ในแบบที่มีข้อมูลล้นไปหน้าอื่นบางส่วน หรือมีหน้าเปล่าแสดงออกมา แล้วค่อยไปพิมพ์จริงออกเครื่องพิมพ์ที่ตั้งค่าย่อส่วนเพื่อให้พอดีหน้ากระดาษ 1 แผ่นอีกที
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

68
ผมสร้างฟอร์มกรอกข้อมูลลูกค้าโดยมีปุ่มเพิ่มข้อมูล ซึ่งในฟอร์มนี้มีซับฟอร์มลูกค้า ซึ่งผมต้องการให้ เมื่อกรอกข้อมูลเสร็จ แล้วกดปุ่มเพิ่มข้อมูล
ข้อมูลที่เพิ่งกรอกไปจะมาโชว์ในซับฟอร์มทันที จะมีวิธีไหนอย่างไรบ้างไหมครับ ขอบคุณครับ
ที่คำสั่งต่อท้ายด้วย me.ชื่อของ sub form.requery
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

69
ห้อง MS Access / > ลบข้อมูลซ้ำ
« เมื่อ: 15 มี.ค. 61 , 21:51:05 »
DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]=" & MySearch!MemberCode & " AND tblName.[Date]=" & CDbl(MySearch!MaxOfDate)

แก้ชือตารางให้ตรงด้วยนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

70
ห้อง MS Access / > ลบข้อมูลซ้ำ
« เมื่อ: 15 มี.ค. 61 , 10:30:16 »
มัน Error Type missmatch ที่บรรทัดนี้ครับ
DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]='" & MySearch!MemberCode & "' AND [Date]=" & CDbl(MySearch!MaxOfDate)

MemberCode ผมเป็น Number (long)
Date เป็น DateTime ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

71
ห้อง MS Access / > ลบข้อมูลซ้ำ
« เมื่อ: 14 มี.ค. 61 , 20:09:12 »
โค๊ด: [Select]
Private Sub Delete_Last()
Dim MySearch As Recordset

Set MySearch = CurrentDb.OpenRecordset("SELECT tblName.MemberCode, Count(*) AS CountRec, Max(tblName.Date) AS MaxOfDate FROM tblName GROUP BY tblName.MemberCode HAVING (Count(*))>1;")
If MySearch.RecordCount > 0 Then
    MySearch.MoveFirst
    Do While Not MySearch.EOF
        DoCmd.RunSQL "DELETE tblName.* FROM tblName WHERE [MemberCode]='" & MySearch!MemberCode & "' AND [Date]=" & CDbl(MySearch!MaxOfDate)
        MySearch.MoveNext
    Loop
End If

MySearch.Close
Set MySearch = Nothing
   
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eik Q Sang

หน้า: 1 2 3 [4]