แสดงกระทู้

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 ... 4 5 6 [7] 8 9 10 ... 29
109
ต้องเช็คผลจากฟังก์ชั่นก่อนด้วยสิครับ ถึงจะบอกได้ว่ามีหรือขาดฟอนท์นั้น


Private Sub Command0_Click()
    If Not CheckFont ("Angsana New") Then
       MsgBox "ไม่มีฟอนต์นี้ในระบบ"
    End If
End Sub

111
ห้อง MS Access / : การทำ supertype & subtype
« เมื่อ: 11 มี.ค. 63 , 16:34:16 »
อย่างที่บอก Access ไม่มี Constraint ของเทเบิลที่ทำอะไรแบบนั้นครับ  ส่วนคุณสมบัติของความสัมพันธ์   Access ก็มีไม่มีอะไรเกี่ยวกับ Disjoint เหมือนกันครับ


112
ห้อง MS Access / : การทำ supertype & subtype
« เมื่อ: 11 มี.ค. 63 , 14:10:53 »
อ้างถึง
แถวข้อมูลหนึ่งๆในเอ็นทิตี้ supertype จะสามารถมีความสัมพันธ์กับข้อมูลในเอ็นทิตี้
subtype หนึ่งๆเท่านั้น (ห้ามมีความสัมพันธ์กับหลายเอ็นทิตี้ subtype)” เช่น แถวข้อมูลหนึ่งๆในเอ็นทิตี้ EMPLOYEE จะมีความเกี่ยวเนื่องกับเอ็นทิตี้ PILOT หรือ MECHANIC หรือ ACCOUNTANCE อย่างใดอย่าง หนึ่งเท่านั้น
   

เท่าที่อ่านดู มันเป็นแค่ logical เท่านั้น ถ้าไม่ต้องการให้ EMPLOYEE คนนั้น(เรคอร์ดนั้น) มีตำแหน่งเป็นอะไร ก็ไม่ต้องไปสร้างเรคอร์ดในเอ็นทิตี้ที่ไม่เกี่ยวข้องเท่านั้นเอง ระบบจะไปรู้ได้ยังไงว่าคนไหนจะให้มีตำแหน่งอะไรได้บ้าง หรือให้นั่งหลายๆตำแหน่ง ตำแหน่งไหนได้บ้าง

ส่วนถ้าจะบอกว่า งั้นให้ระบบเช็คเองว่าถ้านาย ก. มีเรคอร์ดอยู่ในเอนทิตี้หนึ่งเอนทิตี้ใดใน 3 เอนทิตี้นี้แล้ว ก็ให้ระบบตรวจสอบห้ามไม่ให้สร้างเรคอร์ดนาย ก. ในอีก 2 เอนทิตี้ที่เหลือด้วยตัวมันเองเลย อย่างนี้ Access ไม่มี Constraint แบบที่ว่านี้ครับ 

ยกเว้นในกรณี Disjoint เราอาจทำได้โดยเพิ่มฟิลด์ POSITION_CODE ใน EMPLOYEE เพื่อเก็บสถานะว่าเขาดำรงตำแหน่งอะไรอยู่ ณ ตอนนี้ ดังนั้นคนๆนึงก็จะเป็นได้แค่ตำแหน่งใดตำแหน่งหนึ่งเท่านั้นเอง ส่วนจะให้ใส่ POSITION_CODE อะไรได้บ้าง ก็ไปใส่เป็น Expression ใน Validation Rule ของฟิลด์ POSITION_CODE ได้เลย เช่น [POSITION_CODE] ='M' or [POSITION_CODE] ='A'

113
ห้อง MS Access / : การทำ supertype & subtype
« เมื่อ: 11 มี.ค. 63 , 13:28:29 »
Overlaping กับ Disjoint มันคืออะไรครับ ช่วยอธิบายที

114
ใน RowSource property ของ txtSubjectID มี 3 ฟิลด์ ดังนั้นใน Column Count property ก็ต้องเป็น 3 ด้วย และ Column Width ก็ควรเป็น 0";0.7875";0" ครับ

115
ใช่ครับ ไม่มีซอร์ซโค้ดให้ คือเขาเขียนแล้วแปลงเป็นไลบรารี่ แล้วให้โค้ดบนชีทที่คำนวนเรียกใช้ผ่านไลบรารี่แทน

116
ยังสงสัยว่าทำไมต้องเลือกใช้ Microsoft Word 16.0 Object Library ?

117
Excel มีให้โหลดเป็นโค้ดหรืออะไรครับ อยู่ที่เวปไหน จะได้ดูว่ามันเป็น VBA อยู่แล้วหรือเปล่า

119
1. ในรูปผมเห็น Missing Library ตามที่คาดเอาไว้เลย ให้เอาออกครับ เสร็จแล้ว Compile แล้ว Save และออกจาก Access ไปเลย


2. เข้า Access ใหม่ สร้างฐานข้อมูลเปล่าตัวใหม่ แล้ว Import ทุกอย่างจากไฟล์เก่า โดยไปที่ External Database > Access > ใส่ File Name > คลิก Import > เลือกทุกอย่างจาก Table, Query, ... > คลิก OK แล้วใช้ไฟล์ใหม่แทน

120
เข้า VBA Editor แล้วเลือ Debug > Compile และดูที่ Tools > Reference ดูว่ามีบรรทัดไหนที่ทำเครื่องหมายเลือกไว้ แต่มีคำว่า Missing นำหน้าบ้าง  ถ้ามีก็แปลว่า ไลบรารี่ ตัวนั้นหายไปจากระบบ ถ้าไม่ได้ใช้ก็ไม่ต้องทำเครื่องหมาย แล้ว Compile อีกที

ลองอ่านอันนนี้ด้วยครับ ไม่แน่ใจว่าเกี่ยวข้องหรือไม่
https://www.thai-access.com/yeadram_view.php?topic_id=2120

121
เมื่อ C คือ ชื่อซับฟอร์มคอนโทรล ซึ่งอาจคนละชื่อกับตัวซับฟอร์มเองก็เป็นได้

Me.C.SetFocus
On Error Resume Next
DoCmd.GoToRecord , , acNewRec

122
ไปช่องค้นหา แล้วป้อน addnew และ sql insert ก็จะเห็นเยอะแยะเลยครับ

123
อาจสร้าง 2 เทเบิลเพื่อเก็บข้อมูลชั่วคราวสำหรับ ที่ดินที่เลือกมาทำธุรกรรม และสำหรับ ป้อนที่ดินที่เกิดใหม่หลังจากธุรกรรม แล้วพอคลิก สร้างธุรกรรม ก็เอาข้อมูลเหล่านี้ไปสร้างลงเทเบิลจริงอีกที ส่วนการเขียนโค้ดสำหรับสร้างเรคอร์ด กรณีนี้มีหลายเรคอร์ดและหลายฟิลด์ แนะนำใช้ .AddNew, .Edit และ .Update สำหรับ Recordset ต่างๆที่เกี่ยวข้อง จะดูสะอาดตาดีกว่าเขียน SQL INSERT/UPDATE statement ครับ

125
ห้อง MS Access / : Record Source
« เมื่อ: 26 ก.พ. 63 , 09:57:01 »
.

126
ที่ดินเกิดธุรกรรม ทำให้ข้อมูลของที่ดินรหัสนั้นๆมีการเปลี่ยนแปลง และเนื่องจากต้องการเก็บประวัติ ดังนั้นรหัสของที่ดิน (FL_CODE) อย่างเดียว นำไปเป็น primary key ไม่ได้ ก็ต้องมีอีกฟิลด์ที่เป็นลำดับแสดงสถานะภาพของที่ดินรหัสนั้นร่วมอยู่ด้วย (ผมไม่แน่ใจว่าในนี้คือ FL_ID หรือเปล่า) เช่น F100 ลำดับที่ 1 เมื่อมีการเปลี่ยนแปลงอะไรไปก็จะเป็น F100 ลำดับที่ 2

ต่อไปที่ดินมีเกิดธุรกรรมคือ การแบ่ง ทำให้เกิดความสัมพันธ์ one-to-many ระหว่าง รหัสที่ดิน+ลำดับสถานะภาพนั้นๆ กับ รหัสที่ดิน(รหัสเดิมและ/หรือรหัสใหม่)+ลำดับสถานะภาพใหม่  ส่วนธุรกรรม การรวม ที่ดินก็ทำให้เกิดความสัมพันธ์ many-to-one  ระหว่าง รหัสที่ดิน+ลำดับสถานะภาพนั้นๆ กับ รหัสที่ดิน(รหัสเดิมและ/หรือรหัสใหม่)+ลำดับสถานะภาพใหม่  จะสังเกตเห็นว่ามันเป็นความสัมพันธ์แบบ many-to-many ระหว่างเทเบิล Tbl_Farmland กับตัวมันเอง ฟังดูแล้วอาจจะแปลกๆเพราะปกติจะเห็นแต่ความสัมพันธ์ระหว่างเทเบิลที่แตกต่างกัน แต่ความสัมพันธ์แบบนี้ก็มีครับ และเป็นกฏเกณฑ์เลยว่าเมื่อมี many-to-many ก็จะต้องสร้างเทเบิลกลางขึ้นมาใหม่อีกตัว และมีความสัมพันธ์กับเทเบิลเดิมแบบ many-to-one เทเบิลใหม่นี้คือเทเบิล "ความสัมพันธ์ของที่ดินจากธุรกรรม" ซึ่งน่าจะประกอบไปด้วย 6 ฟิลด์เป็นอย่างน้อย (สามารถใช้ทั้ง 6 ฟิลด์รวมเป็น primary key ได้) คือ
   - เลขที่ธุรกรรม
   - รหัสที่ดินก่อนธุรกรรม
   - ลำดับสถานะภาพของที่ดินในฟิลด์ที่ 2
   - รหัสที่ดินหลังธุรกรรม
   - ลำดับสถานะภาพของที่ดินในฟิลด์ที่ 4
   - ประเภทธุรกรรม (แบ่ง,รวม,โอน)
จากเทเบิลนี้ ก็สามารถเช็คได้ว่าที่ดินรหัสนั้นๆมีธุรกรรมอะไรเกิดขึ้น แต่ต้องเช็คทั้ง 2 ขาคือเช็คในฟิลด์ที่ 2 และ 4 ด้วยครับ

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

หน้า: 1 ... 4 5 6 [7] 8 9 10 ... 29