สมัครสมาชิก

แสดงกระทู้

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 ... 7
1
ลองสร้างไฟล์ .accdb ใหม่ จาก Access 2016 ดูครับ สร้างเทเบิลเปล่าที่มีฟิลด์เดียวสักเทเบิล แล้วเอาไปเปิดในเครื่อง XP ถ้าเปิดได้ แปลว่าไฟล์ที่ใช้งานจริงอาจจะเสียหรือไม่ก็มีการใช้คุณสมบัติที่ไม่มีใน Access 2007 วิธีที่ทำกันอย่างนึงก็คือโหลดเอา Access 2016 Runtime มาใช้งานบนเคริ่องhttps://www.microsoft.com/en-us/download/details.aspx?id=50040 link  ซึ่งคร่าวๆก็คือ โปรแกรมของฟรีที่แจกให้ใครก็ได้เอาไปใช้เพื่อเปิดใช้งานไฟล์ฐานข้อมูล ซึ่งจะทำงานเหมือน Full Version แต่จะไม่สามารถแก้โครงสร้างเทเบิล แก้ไขคำสั่งแมโครและ VBA โค้ด
โพสต์นี้ได้รับคำขอบคุณจาก: Panupong

2
1. เปิดไม่ได้ มีข้อความแสดงออกมาว่าอะไร
2. ที่เขียน v.7 คือเวอร์ชั่น 2007 หรือไม่
3. สร้างไฟล์นามสกุลอะไร
4. ใช้ Access ระบบ 32 bit หรือ 64 bit ในการสร้างไฟล์ เพราะ Access 32 bit จะไม่สามารถเปิดไฟล์ .mde/.accde ที่สร้างจาก 64 bit
โพสต์นี้ได้รับคำขอบคุณจาก: Panupong

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

แต่ถ้าไม่ต้องการอย่างงั้น และข้อมูลอยู่ในรูปของเท็กซ์หรือเอ็กเซลล์ไฟล์ ก็ลิงค์ไฟล์เหล่านั้นโดยตรงเข้ามาเป็นลิงค์เทเบิลใน Access ได้เช่นกันครับ
โพสต์นี้ได้รับคำขอบคุณจาก: sjs

4
ห้อง MS Access / : Hide Duplicates
« เมื่อ: 25 ธ.ค. 61 , 11:14:32 »
Visit_Date เปลี่ยนเป็น VisitDate (ไม่แน่ใจ)
โพสต์นี้ได้รับคำขอบคุณจาก: Un

5
ห้อง MS Access / : Hide Duplicates
« เมื่อ: 23 ธ.ค. 61 , 16:21:58 »
ในโค้ด ให้แก้คำสั่งเป็น

RS.FindFirst "PID = '" & aPK1 & "' and Visit_No = '" & aPK2 & "' "
หมายเหตุ : ถ้า PID และ Visit_No ตัวไหนที่มี Data Type ในเทเบิลเป็น Numeric ก็เอาเครื่องหมาย ' ออก

และแก้

If RS("Visit_Date") <> aF then
   F = aF
End If

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

6
ห้อง MS Access / : Hide Duplicates
« เมื่อ: 23 ธ.ค. 61 , 15:10:15 »
=F(PID, Visit_No, Visit_Date)
โพสต์นี้ได้รับคำขอบคุณจาก: Un

7
ห้อง MS Access / : Hide Duplicates
« เมื่อ: 23 ธ.ค. 61 , 13:54:43 »
- คอลัมน์ที่จะไม่ให้แสดงค่าซ้ำคือคอลัมน์อะไร
- คอลัมน์นั้นเอามาจากฟิลด์อะไรในเทเบิล
โพสต์นี้ได้รับคำขอบคุณจาก: Un

8
1. ไม่น่าจะเป็นไปได้ที่ Doxorubicin2 จะถูกเขียนทับเป็น 62.4 โดยยังไม่คลิกปุ่ม Save  ดังนั้นถ้าเกิด Doxorubicin2 กลายเป็นค่า 62.4 ก็น่าจะแปลได้ว่าเรคอร์ดถูก Save ด้วยวิธีใดวิธีหนึ่งไปแล้ว ให้ลองทดสอบดูครับ เมื่อเป็น 62.4 ในรอบแรกแล้ว และก่อนที่จะแก้ Doseadjust = 90  ก็เปิดดูจากเทเบิลโดยตรงไปเลยว่าตอนนี้ Doxorubicin2 เป็น 62.4 หรือไม่

2. สงสัยว่า AC-regimen มีแค่เรคอร์ดเดียวหรือยังไง ทำไมเวลาสั่ง DLookup(Doxorubicin2, "AC_regimen") จึงไม่มีพารามิเตอร์ตัวที่ 3 ใน DLookup เพื่อกำหนดว่าจะเลือกจากเรคอร์ดไหน
โพสต์นี้ได้รับคำขอบคุณจาก: Looktarn

9
ผมคิดว่า มันไม่ได้เกี่ยวกับโค้ด แต่น่าจะเกี่ยวกับการตั้งขอบซ้ายขวาของกระดาษมากกว่านะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: sjs, Looktarn

10
ให้แก้เป็น

On Error Resume Next
DoCmd.RunCommand acCmdRecordsGoToNext
If Me.NewRecord Or Err.Number <> 0 Then Me.Requery
โพสต์นี้ได้รับคำขอบคุณจาก: prajak

11
VDO และ PowerPoint อธิบายเรื่อง เข้าถึงหัวใจของปัญญาประดิษฐ์ และความน่าตื่นเต้นของ Deep Learning  https://aiat.or.th/heart-of-ai/?fbclid=IwAR0Emd5APHDq3uVXt53s2ID3FJxzv0uuazEWejViiY3ay6mV2XwUDEswqT8 link

หมายเหตุ : ไม่แน่ใจว่าเวปของลิงค์ (สมาคมปัญญาประดิษฐ์ประเทศไทย) มีอยู่ในลิงค์ของหัวกระทู้หรือเปล่า แต่ VDO นี้เพิ่งออกมาใหม่ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: sjs, BH

12
Between IIf(Day(Date())>=3,DateSerial(Year(Date()),Month(Date()),2),DateSerial(Year(Date()),Month(Date())-1,2)) And IIf(Day(Date())>=3,DateSerial(Year(Date()),Month(Date())+1,2),DateSerial(Year(Date()),Month(Date()),2))

ความหมายก็คือ
หาข้อมูลระหว่างวันที่ (ถ้าวันที่ >= 3, ให้เป็นวันที่ 2 ของเดือนนี้, ถ้าไม่ใช่ก็เป็นวันที่ 2 ของเดือนที่แล้ว) และวันที่ (ถ้าวันที่ >= 3, ให้เป็นวันที่ 2 ของเดือนหน้า, ถ้าไม่ใช่ก็เป็นวันที่ 2 ของเดือนนี้)

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

13
ห้อง MS Access / : Hide Duplicates
« เมื่อ: 01 พ.ย. 61 , 21:08:01 »
แนวทางเท่าที่คิดได้ตอนนี้คือสร้าง ฟังก์ชั่น F ที่รับค่าของทุกฟิลด์ใน Primary Key (หรือ Unique Key) ของบรรทัดนั้นๆ (aPK1 ถึง aPKn) และค่าของฟิลด์ (aF) ที่ต้องการเปรียบเทียบระหว่างบรรทัดนั้นกับบรรทัดก่อนหน้า ส่วนตัวฟังก์ชั่นเองก็คืนค่าของฟิลด์ aF ที่ต้องการแสดงกลับมา ซึ่งก็เป็นไปได้ 2 อย่างคือ ค่าที่ส่งเข้ามา หรือไม่ก็ไม่ต้องแสดงเพราะค่าเท่ากับบรรทัดก่อนหน้า

โค๊ด: [Select]
' โค้ดนี้เป็นแค่แนวทาง ต้องไปปรับปรุงเองนะครับ
Public Function F(aPK1 as Variant , ... , aPKn as Variant , aF as Variant) as Variant
Dim RS As DAO.Recordset

' กรณีเป็นบรรทัดของ New Record ค่าที่ส่งมาจะเป็น NULL
' ก็ไม่ต้องทำอะไร ออกจากฟังก์ชั่นได้เลย
If IsNull(aPK1) Then Exit Function

' กำหนด recordset ของฟอร์มที่โค้ดจะใช้ในการค้นหาเพื่อเปรียบเทียบ
Set RS = Forms("ชื่อฟอร์ม").RecordsetClone

' ทำการรวบรวมทุกเรคอร์ดให้ recordset รู้จัก
RS.MoveLast

' ค้นหาเรคอร์ดที่มีค่าตรงกับ Primary Key ของบรรทัดนั้นๆ
RS.FindFirst " ฟิลด์1 = " & aPK1 & " and ฟิลด์2 = " & aPK2 & ... & " and ฟิลด์n = " & aPKn

' ถ้าเป็นบรรทัดแรก ค่าที่ส่งกลับไปแสดงก็คือค่าที่ส่งเข้ามานั่นเอง
If RS.AbsolutePosition = 0 Then
F = aF
Exit Function
End If

' ย้อนกลับไป 1 เรคอร์ด (บรรทัด)
RS.MovePrevious

' ถ้าค่าของฟิลด์ในบรรทัดก่อนหน้าไม่เท่ากับค่าที่ส่งมา ก็ให้ส่งกลับไปแสดงค่าที่ส่งเข้ามาเช่นกัน
If RS("ชื่อฟิลด์") < > aF Then
F = RS("ชื่อฟิลด์")
End If

' แต่ถ้าเท่ากัน ก็ไม่ต้องส่งอะไรกลับ มันจะเป็น NULL เป็นค่าว่างๆ
End Function

ถ้าเท็กซ์บ็อกซ์ของฟิลด์ T ที่แสดงค่าชื่อว่า txtT  เราก็ใส่ =F([ชื่อฟิลด์ที่1ของ PK],...,[ชื่อฟิลด์ที่ n ของ PK], [T]) ไว้ใน Control Source property ของ txtT นั่นเอง

ตย.การแสดง

เลขเอกสาร(aPK1)   รหัสสินค้า(aPK2)   แผนกผลิต(txtT)   วันที่ผลิต   จำนวนที่ผลิต
A0001      001         CUT      15/11/2018   100
B0003      003                  16/11/2018   300
C0005      005         ASSY      16/11/2018   500
D0007      007                  17/11/2017   700
โพสต์นี้ได้รับคำขอบคุณจาก: Un

14
ดีที่สุดคือ เพิ่มฟิลด์ที่เก็บวันเวลาที่บันทึก และถ้าต้องการเรียงลำดับตามเวลาที่อัพเดทด้วย ก็ต้องมีฟิลด์ที่เก็บวันเวลาเมื่ออัพเดตอีกฟิลด์ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Wisa.t

15
เราใช้ฟอนท์ Wingding สำหรับเท็กซ์บ็อกซ์เพื่อแสดงรูปสัญญลักษณ์ได้ สมมุติ P คือชื่อฟิลด์ที่เก็บ path ของรูป ก็กำหนด Control Source ของเท็กซ์บ็อกซ์ที่แสดงสัญญลักษณ์เป็น =IIf(nz([P],"")="","","*") มันก็จะแสดงสัญญักษณ์ จดหมาย (เพราะหาไม่เจอสัญญลักษณ์รูป คลิป)  ถ้าอยากได้สัญญลักษณ์อื่นๆ ก็เปิดโปรแกรม Character Map ที่มากับวินโดว์อยู่แล้ว เลือกฟอนท์ Webding, Wingding(1-3) เอาตัวไหนก็ดับเบิลคลิกรูปแล้วคลิกปุ่ม Copy  กลับมาที่ expression ข้างบน กดคีย์ paste ลงแทนที่ * ได้เลยครับ
โพสต์นี้ได้รับคำขอบคุณจาก: aek

16
ผมมีโค้ดตัวนึง ลองเอาโค้ดนี้ไปใช้ดู แต่ไม่ยืนยันนะครับว่าจะถูกต้อง 100% หรือไม่
โค๊ด: [Select]
Public Sub CutLastCRLF(aFullFileNM As String)
    Dim B As String * 1
    Dim S As String
    Dim L As Long

    Open aFullFileNM For Binary Access Read As #1
    Do Until EOF(1)
        Get #1, , B
        S = S & B
    Loop
    Close #1

    If Right(S, 3) <> vbCr & vbLf & vbNullChar Then
        Exit Sub
    End If

    S = Left(S, Len(S) - 3)

    On Error Resume Next
    Kill aFullFileNM

    On Error GoTo 0
    Open aFullFileNM For Binary Access Write As #1
    Put #1, , S
    Close #1
End Sub
จะเรียกใช้ก็สั่ง Call CutLastCRLF("Drive:\Path\File.txt") มันจะเขียนทับไฟล์เดิมครับ
โพสต์นี้ได้รับคำขอบคุณจาก: aek, อุดมโชค สมหวัง

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