สมัครสมาชิก

แสดงกระทู้

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 ... 25
1
ห้อง MS Access / : ขอคำแนะนำออกแบบฐานข้อมูล Access
« เมื่อ: วันนี้ เวลา 11:31:07 »
รูปเกษตรกร ใส่ได้คับ เราใช้การ Attachment แล้ว นำมาแสดงบนฟอร์ม
ออกแบบส่วนต่างๆของฟอร์มมาคับ
แล้วส่งมาทาง Inbox เดี่ยวผมลองสร้างให้ครับ

2
ห้อง MS Access / : ขอคำแนะนำออกแบบฐานข้อมูล Access
« เมื่อ: วันนี้ เวลา 09:28:23 »
สวัสดีครับ ผมขอเสนอแบบนี้นะครับ ไม่รู้ว่าโอเคไหม
จากข้อมูลนี้มีแบ่งด้วยกัน 2 ส่วนคือ
1. ส่วนที่เป็นประวัติและข้อมูลส่วนตัวของเกษตรกร
2. ข้อมูลส่วนของโฉนดที่ดิน จำนวนไร่ และสถานะการปลูกและการตรวจสอบ

ID น่าจะสร้างจากเลขบัตรประจำตัวประชาชนเพราะไม่มีค้าซ้ำกันแน่นอนครับ
การออกแบบความสัมพันธ์ (ReletionShip) เลยกำหนดให้เป็นแบบ One To Many
เพราะเกษตรกร 1 คนอาจจะมีแปลงนาได้หลายๆแปลง หรือมีโฉนดหลายใบครับซึ่งถ้าเรากำหนด
ID จากเลขบัตรประจำตัวประชาชนก็จะง่ายต่อการค้นหา การลบ แก้ไข และการจัดกลุ่มครับ

ในส่วนของเลขที่โฉนดที่ดิน จะสร้าง PrimaryKey ไว้เพื่อเลขที่โฉนดแปลงนา ต้องไม่ซ้ำกันคับ

ส่วนที่ผมคิดว่าน่าจะออกแบบตารางออกมาก็ประมาณนี้ครับ


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



3
รบกวนสอบถามอาจารย์ทุกท่านคะ

เราสามารถใช้ Query Add ข้อมูลที่เป็นรูปแบบ Attachment (ที่สร้างแยกใน Form เปล่า)   แล้วใช้ Query
ในการเพิ่มAttachment ลงในตารางได้ไหมคะ โดยที่เราไม่ได้ดึงตารางนั้นๆขึ้นมาใช้

หรือมีวิธีหรือคำแนะนำอื่นๆไหมคะ  :question:

ขอบคุณคะ :love:

ข้อมูลที่เป็นรูปแบบ Attachment (ที่สร้างแยกใน Form เปล่า) มีหน้าตาฟอร์มที่ออกแบบไว้ไหมครับ
จะได้ลองคิดแนวทางให้ครับว่าคุณต้องการแบบไหน Attachment ที่จะเพิ่มเข้าไปคืออะไร 
แล้วจะเลือก Attachment อย่างไร เพื่อนำไปบันทึกลงในตาราง
ลงตาราง ชื่ออะไรครับ ลองอธิบายเพิ่มอีกนิดนะครับ

 :grin: :grin:


4
ห้อง MS Access / : สอบถามError import csv fileค่ะ
« เมื่อ: 16 ม.ค. 62 , 14:17:46 »
ใส่ PtrSafe เข้าไปด้วยคับ

Declare PtrSafe Function aht_apiGetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (OFN As tagOPENFILENAME) As Boolean
Declare PtrSafe Function aht_apiGetSaveFileName Lib "comdlg32.dll" Alias "GetSaveFileNameA" (OFN As tagOPENFILENAME) As Boolean
Declare PtrSafe Function CommDlgExtendedError Lib "comdlg32.dll" () As Long

5
ห้อง MS Access / : สอบถามError import csv fileค่ะ
« เมื่อ: 15 ม.ค. 62 , 13:41:41 »
เป็นทุกครั้งไหมครับ
เหมือน Ram ไม่พอครับ
Windows กี่ Bit 
Ram เท่าไหร ครับ

6
ห้อง MS Access / : วิธีเซฟไฟล์ MDB เป็น ACCDB
« เมื่อ: 15 ม.ค. 62 , 13:22:15 »
อยากทราบวิธีเซฟไฟล์ MDB เป็น ACCDB ครับ ไฟล์ MDB ไม่สามารถกำหนดฟิลด์ ให้เป็น Attachment ได้ ตรงเมนูบันทึกฐานวัตถุข้อมูลเป็น  ไม่มีให้เลือกเป็น ACCDB เลยครับ :question:

จะเปลี่ยนเป็น accdb ต้องไปเลือกที่เขียนว่า บันทึกและประกาศครับ



7
ห้อง MS Access / : สอบถามError import csv fileค่ะ
« เมื่อ: 15 ม.ค. 62 , 11:49:48 »
สอบถามค่ะ Errorนี้เกิดจากอะไรคะ
สร้างปุ่มimportไฟล์ CSVค่ะ ลองเทสดูแล้วErrorค่ะ



GetOpenFile น่าจะอ้างอิงมาจาก Module หรือ Function นะครับ เพราะไม่มีการกำหนดตัวแปรไว้ตรงนั้น


8
จะลองแก้ไขดูครับ

โปรแกรมสร้างจาก access Version ไหน ครับ
ลองส่งชิ้นงานนั้น Zip ไฟล์ ของชิ้นงานส่งมาทาง Inbox ครับเดี่ยวตรวจเช็คให้อีกที

แต่เบื้องต้น ให้ลองเช็คความพร้อมของเครื่องนั้นดูก่อนนะคับ
ส่วนการใส่รูป ในบอร์ด บอร์ดนี้มี ระบบ อัพโหลดภาพแล้วนะครับ ไฟล์ Jpeg อัพได้เลยครับ

9
พอดีว่าใช้ computer 2 เครื่อง เขียนโปรแกรมด้วยเกี่ยวข้องกันไหมครับ

ลองเช็คตามนี้ดูว่าแก้ไขได้ไหม
1.ดูตรง Reference ว่ามีตัวไหนหายไปหรือไม่ กด Ctrl + G > Tool > Reference
2.เช็คการตั้งค่าภาษาด้วยครับ ว่ามีภาษาไทย หรือไม่
3.ถ้าเกิดที่ฟอร์มไหนให้ Copy Form นั้นไป Backupไว้ แล้วลบอันเก่าออก แก้ชื่ออันที่เพิ่ง Copy ไปเป็นชื่อเดิมแทนแล้วลองเปิดดูว่ายังเป็นไหม

10
รบกวนสอบถามครับ ถ้าในคิวรี่มี่2ฟิวด์คือ ฟิวด์A กับฟิวด์B
ต้องการให้ที่ฟิวด์B = ฟิวด์A ลบ(-) ฟิวด์Aของrecordก่อนหน้า ต้องใช้สูตรยังไงครับ

ถ้า อันล่างลบอันบน น่าจะประมาณนี้ครับคุณประจักษ์

โค๊ด: [Select]
SELECT Table1.ID, Table1.Item, Table1.A, DLookUp("[A]","Table1","[ID]=" & [ID]-1)-NZ([a],0) AS B
FROM Table1;


11
:love: :prettiness:

ขอบคุณค่ะอาจารย์เดี๋ยวลองทำดูแล้วจะมารายงานอีกรอบนะคะ
อีกอย่างหนึ่งค่ะ ขอสอบถามอาจารย์เกี่ยวกับคำสั่งตรงนี้นะค่ะ  :grin: :grin: ความหมายคืออะไรหรอคะ

ขอบคุณค่ะ :love: :love: :love:

ตรง Set DB = Nothing
      Set rs = Nothing   

ปกติ เมื่อเราเรียกใช้ หรืออ้างอิงไปยัง Record หรือ database ตัวไหนเมื่อเรียกใช้งานเสร็จแล้วก็ควรจะสั่งปิด หรือยกเลิกการเรียกใช้ไปครับ
DB คือ การกำหนดเรียกใช้ อ้างอิง database
RS คือเรียกใช้อ้างอิง Recordset


MsgBox "ADD  :  " & NewData & "  Success", vbInformation, "status"
เป็นการสร้างกล่องข้อความตอบโต้เพื่อแสดงข้อความว่าได้เพิ่มข้อมูลใหม่ลงไปเสร็จแล้วครับ

Response = acDataErrContinue

ปกติเมื่อใช้ combobox แล้วเมื่อไม่มีรายการจะมีข้อความของระบบ แจ้งว่าข้อมูลไม่ได้อยู่ในรายการ ซึ่งคำสั่งนี้ สั่งปิดข้อความแจ้งเตือนครับ

Me.textbox2.SetFocus
SetFocus คือ การกำหนดว่าให้ Cursor ไปแสดงที่ Control ตัวไหน

12
สวัสดีค่ะอาจารย์ ทำได้แล้วค่ะ แต่พอทำเหมือนกันแต่เป็นที่ SubForm จะขึ้นแบบตามรูปภาพนะค่ะ
*** แต่ข้อมูลที่เราเพิ่มไปบันทึกในตารางแล้วนะคะ แต่ไม่แสดงที่ตัวเลือกเหมือนฟอร์มหลักนะค่ะ ไม่แน่ใจว่าผิดตรงไหนรึเปล่าคะ
รบกวนอาจารย์แนะนำด้วยนะคะ...ขอบคุณค่ะ :love: :love: :love: :prettiness: :prettiness:

แก้จาก Me.CB_รหัสวัสดุ = null
เป็น  Me.CB_รหัสวัสดุ.Undo 

ความต้องการคือเมื่อบันทึกค่าใหม่เข้าไปแล้วให้ย้อนกลับไปแสดงรายการปกติและมีรายการใหม่แสดงอยู่ด้วยครับ


13


ตัวอย่างนี้ใช้ได้กับ Form หลัก หรือ Subform ได้หมด ครับ
เพราะเป็นการกำหนด Event ของตัว Control ครับ โดยผมได้สร้างตัวอย่างกรณีที่เป็น SubForm ไว้แล้วด้วยครับ แต่ผมยังให้มันไปเพิ่มที่ตารางเดิมอยู่ แต่สามารถเปลี่ยนได้ตามต้องการคับ

ส่วนการเพิ่ม Item_cat เมื่อกด Yes เพื่อจะเพิ่มรายการให้แล้วก็ให้แสดง InputBox ขึ้นมาเพื่อรับค่าของ Item_Cat อีก Field แล้วจึงบันทึกค่าลงไปในตารางครับ


โค๊ด: [Select]
Option Compare Database

Private Sub Cb_ItemList_GotFocus()
Me.Cb_ItemList.Requery
End Sub

Private Sub Cb_ItemList_NotInList(NewData As String, Response As Integer)
    Dim i As Integer
    Dim Msg As String
 
  'ให้โปรแกรมแจ้งเตือนเมื่อเจอ ข้อมูลที่ไม่มีในรายการ
    If NewData = "" Then Exit Sub
    Msg = "'" & NewData & "' ไม่มีในรายการ" & vbCr & vbCr
    Msg = Msg & "ต้องการเพิ่มรายการใหม่ ?"
    i = MsgBox(Msg, vbQuestion + vbYesNo, "Checked")
   
'ถ้าเราตอบ Yes จะเริ่มการบันทึกลงไปในตารางทันที
    If i = vbYes Then
    Dim addItem_Cat As String
    addItem_Cat = InputBox("กำลังจะเพิ่มรายการ " & NewData & vbCrLf & "กรุณาระบุค่า..:", "เพิ่มค่าสำหรับ Field ITEM_Cat")
    If Not IsNull(Me.Cb_ItemList) And addItem_Cat <> "" Then
            Set DB = CurrentDb()
            Set rs = DB.OpenRecordset("TblItem_List", DB_OPEN_DYNASET) ' TblItem_List คือชื่อตารางที่จะเพิ่มรายการ
           
            LastID = Dmax("Item_ID", "TblItem_List")  'ตรงส่วนนี้คือการหาค่า ID ล่าสุดที่มีอยู่แล้วนำมา +1 เพื่อไม่ให้ซ้ำกัน
            LastID = LastID + 1
           
    rs.AddNew
    rs![Item_ID] = LastID  'Item_ID คือ ฟิลล์ Item_ID ในตาราง
    rs![Item_Name] = NewData    'Item_Name คือ ฟิลล์ Item_Nameในตาราง
    rs![Item_Cat] = addItem_Cat
    rs.Update
   
    Set DB = Nothing
    Set rs = Nothing
    MsgBox "ADD  :  " & NewData & "  Success", vbInformation, "status"
            Response = acDataErrContinue
            Me.Cb_ItemList.Undo
            Me.textbox2.SetFocus
 End If
 Else
    Response = acDataErrContinue
 End If
End Sub
             


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

15
ถ้าต้องการเพิ่มข้อมูลที่นอกเหนือจากที่มีในตัวเลือก แล้วให้ข้อมูลนั้นไปบันทึกในตารางที่ใช้อ้างอิงได้มั้ยคะ

ลองดูตัวอย่างนี้ครับ รายละเอียดตัว Control
Combobox  : รายชื่อ ผมสร้างชื่อ  Cb_ItemList
ชื่อตาราง       : TblItem_List
                    มีฟิลล์  Item_ID  และ Item_NAME
Textbox      : ไว้สำหรับรองรับ Cursor ไว้เฉยๆ ครับ ตั้งชื่อ Textbox2
คุณสามารถ เพิ่มรายการเข้าไปได้ทันที โดยเมื่อคุณใส่รายการใหม่เข้าไปจะมีการแจ้งเตือน


เมื่อตอบ Yes ก็จะบันทึกไปที่ตารางทันที

โค๊ด: [Select]
Private Sub Cb_ItemList_GotFocus()
Me.Cb_ItemList.Requery
End Sub

Private Sub Cb_ItemList_NotInList(NewData As String, Response As Integer)
    Dim i As Integer
    Dim Msg As String
 
 
  'ให้โปรแกรมแจ้งเตือนเมื่อเจอ ข้อมูลที่ไม่มีในรายการ
    If NewData = "" Then Exit Sub
    Msg = "'" & NewData & "' ไม่มีในรายการ" & vbCr & vbCr
    Msg = Msg & "ต้องการเพิ่มรายการใหม่ ?"
    i = MsgBox(Msg, vbQuestion + vbYesNo, "Checked")
   
'ถ้าเราตอบ Yes จะเริ่มการบันทึกลงไปในตารางทันที
    If i = vbYes Then
    Dim DB As Database
    Dim rs As Recordset
    Dim LastID As Integer
   
   
            Set DB = CurrentDb()
            Set rs = DB.OpenRecordset("TblItem_List", DB_OPEN_DYNASET) ' TblItem_List คือชื่อตารางที่จะเพิ่มรายการ
           
            LastID = DMax("Item_ID", "TblItem_List")  'ตรงส่วนนี้คือการหาค่า ID ล่าสุดที่มีอยู่แล้วนำมา +1 เพื่อไม่ให้ซ้ำกัน
            LastID = LastID + 1
           
    rs.AddNew
    rs![Item_ID] = LastID  'Item_ID คือ ฟิลล์ Item_ID ในตาราง
    rs![Item_Name] = NewData    'Item_Name คือ ฟิลล์ Item_Nameในตาราง
    rs.Update
    Set rs = Nothing
    Set DB = Nothing
   
    MsgBox "ADD  :  " & NewData & "  Success", vbInformation, "status"
            Response = acDataErrContinue
            Me.Cb_ItemList = Null
            Me.textbox2.SetFocus
    Else
            Response = acDataErrContinue
 End If
           
End Sub
             

16
ห้อง MS Access / : สอบถามคำสั่ง Docmd.Movesize
« เมื่อ: 10 ม.ค. 62 , 14:40:03 »
ที่ คุณสมบัติฟอร์ม FrmDbLine2_Eng1
เป็นแบบนี้หรือยังครับ


ใส่เป็น

  DoCmd.MoveSize 30000, 0, 0, 0

เลยครับ  :cool: :cool:

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