แสดงกระทู้

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 - PNR

หน้า: 1 ... 24 25 26 [27] 28 29 30 ... 46
469
เปิดโปรแกรมที่เขียนจาก Access แล้ว error แบบนี้ แก้ยังไงคะ เครื่องอื่นสามารถใช้งานได้ แต่เครื่องนี้ติดปัญหาตามรูปต่อไปนี้


OFFICE ที่ใช้ Version เดียวกับตัวอื่นๆ ไหมครับ ถ้าไม่ใช่ใช้ Version อะไรอยู่ SP ?
ใช่ตัว Microsoft Office 2010 Service Pack 1 (SP1) หรือเปล่าเพราะถ้าเวอร์ชั่นนี้จะเกิดปัญหา

ลองแจ้ง Windows OS ว่ากี่บิท
ใช้ Microsoft Office Version ไหน
และ Service Pack อะไรนะครับ จะได้แนะนำต่อได้

470
ถ้าจะเพิ่มรายการขายสินค้าใหม่ โดยดึงราคาล่าสุดที่เคยขายสินค้านี้ แต่ให้แก้ไขได้ ถ้าจะเปลี่ยน มีวิธีอย่างไรครับ อจ.

ดึงราคาล่าสุดมาแสดงบน textbox ลองดูโค้ดนี้ครับ

Private Sub good_id_AfterUpdate()
Dim MaxDate As String 'กำหนดตัวแปรไว้เก็บวันที่มากที่สุดของแต่ละ good_id ก่อนใช้ Dlookup ดึงข้อมูลมาแสดงบน textbox S_Price
If Not IsNull(Me.date_sale) And Not IsNull(Me.good_id) Then
MaxDate = Nz(DMax("date_sale", "t_sale", "goods_id = '" & good_id & "'"), 0)
Me.s_price = Nz(DLookup("[s_price]", "[t_sale]", "cstr([date_sale]) ='" & MaxDate & "' And [goods_id] ='" & good_id & "'"), 0)
End if
End Sub

วิธีนี้จะได้ราคาล่าสุดมาแสดงที่ textbox S_Price แต่ก็สามารถลบออกเพื่อแก้ไขราคาได้เองครับ

471
ล็อคแล้วคะ แต่ไม่สามารถ รับค่าจากเครื่องอ่านบัตรได้

น่าจะต้องสร้าง textbox 2 ตัวนะครับ
ตัวแรกไว้รับค่าจากเครื่องแสกน (เอาไปแอบๆไว้)ครับ ชื่อ txtfromscan
ตัวต่อมาคือตัวที่แสดงบนฟอร์มชื่อ txtPersonalID สถานะ Locked = true นะครับ

แนวทางคือรับค่าจาก txtfromscan  แล้วมาแสดงที่ txtPersonalID ที่มีสถานะ Locked ครับ
โค้ด
Private Sub Command6_Click()
Me.txtFromScan.SetFocus  'โค้ดที่ปุ่มเพื่อรับข้อมูลใหม่
End Sub

Private Sub txtFromScan_AfterUpdate() 'หลังจากเสียบบัตรแสกนแล้ว Cursor วิ่งไป textbox ต่อไปให้แสดงเลขประชาชนใน textbox ชื่อ txtPersonalID
Dim StrPersonalID 'สร้างตัวแปรเก็บรหัสประชาชน
If Not IsNull(Me.txtFromScan) Then
StrPersonalID = Me.txtFromScan
If Len(StrPersonalID) = 13 Then 'ใช้ Len เช็คว่าตัวเลขครบ 13 หลักหรือไม่ ถ้าไม่ใช่เราจะไม่แสดงรหัสประชาชน
Me.txtPersonalID = StrPersonalID
Else
MsgBox "รหัสประจำตัวประชาชนไม่ถูกต้อง", vbInformation, "แจ้งเตือน!!"
End If
End If
End Sub

Private Sub txtFromScan_GotFocus()
Me.txtFromScan = Null 'กำหนดให้เมื่อ Cursor ชี้ที่ textbox นี้ให้เป็นค่าว่างรอรับรหัสประชาชนใหม่
End Sub


472
ลองดูครับแบบนี้ไหม


วิธีการคือสร้าง textbox แล้วตั้งค่าตามภาพครับ


473
ผมไม่ได้ใช้ SQL Server ให้ชัวร์สอบถามอาจารย์สันติสุขตรงส่วนนี้ดีกว่าครับ



474
เปลี่ยน Server Collation, Database Collation ตามที่อาจารย์สันติสุข แนะนำในโพสก่อนหน้านี้หรือยังครับ
https://www.thai-access.com/index.php?topic=1308.msg5790#msg5790

ตรงส่วนนี้ สร้างเป็น Varchar ได้ไหม

475
ทำได้แล้วค่ะ ขอบคุณมากๆนะคะ

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

476
ลองเปิดฟอร์มที่ชื่อ MIn ดูนะครับ
ผมใช้วิธีสร้าง combobox ซ้อน Combobox โดยเราจะเลือกรายการจาก Combobox Unbound เมื่่อเลือกแล้วให้ข้อมูลไปแสดงที่ Combobox หลัก ครับ
โดยใช้ Event Gotfocus กับ afterupdate ผมส่งไฟล์ให้แล้วลองดูนะครับ


477
ส่งโปรแกรมทาง Inbox ผมหน่อยครับ ตรวจสอบให้

478
RecordSource ของฟอร์มนี้กำหนดไว้แล้วหรือยังครับ ?
และตัว Control ทุกตัว Bound กับ Field ทุกตัวแล้วหรือยัง ? เช็คที่ ControlSource ของ textbox และ combobox แต่ละตัวนะครับ
อาการคล้ายๆ กับการสร้าง continuous form แล้วไม่ได้กำหนด ControlSource มันเลยขึ้นแบบนั้นได้

479
ลองดูตัวอย่างนี้นะครับ
โค๊ด: [Select]
Private Sub txt_district_AfterUpdate()
Dim Strprovince, Stramphur, Strdistrict As String
Strprovince = Replace(Replace(Replace(Me.txt_province, "จังหวัด", ""), "จ.", ""), "กรุงเทพฯ", "กรุงเทพมหานคร")
Stramphur = Replace(Replace(Replace(Me.txt_amphur, "อำเภอ", ""), "เขต", ""), "อ.", "")
Strdistrict = Replace(Replace(Replace(Me.txt_district, "แขวง", ""), "ตำบล", ""), "ต.", "")

    Me.txt_zipcode = DLookup("post_code", "DATA", "district_th= '" & Strdistrict & "' AND amphur_TH = '" & Stramphur & "' and Province_th = '" & Strprovince & "'")
End Sub

ผมใช้การสร้างตัวแปรมา Replace ให้เหมือนกับข้อมูลในฐาน แล้ว Dlookup กับคิวรี่ชื่อ DATA ครับ
ถ้ามีแบบไหนผิดพลาดเพิ่มเติมอีกก็บอกได้นะครับทำกันจนจะสำเร็จละครับ สู้ๆ

480
ห้อง MS Access / : ฟอร์ม เพิ่ม ดู แก้ใข
« เมื่อ: 25 มิ.ย. 63 , 13:02:55 »


อ้างถึง
ที่เป็นฟอร์มแบบ ไม่เชื่อมตารางหรือคิวรี่  ครับ    โดยใช้ฟอร์มเดียวกัน ครับ

สามารถสร้างได้ แบบหลายมากตามความต้องการแนวใครใครมันไม่เหมือนกันหรอกครับ อยู่ทีการออกแบบฟอร์มของแต่ละคน
ส่วนการสร้างฟอร์มแบบไม่เชื่อมตารางหรือคิวรี่ คงหมายถึงฟอร์มแบบ Unbound Control ใช่ไหม
               โดยอาจจะใช้การ Dlookup มาแสดง กรณีค้นหา หรือ ต้องการดึงข้อมูลมาแก้ไข (อาจจะสร้าง textbox การในค้นหา หรืออื่นๆ
               ใช้การ Addnew หรือ Append Query กรณีต้องการเพิ่มข้อมูลใหม่
               ใช้การ Edit หรือ ใช้ Update Query ในกรณีแก้ไขข้อมูลเป็นต้น
               กรณีต้องการยกเลิกการแสดงข้อมูลโดยไม่บันทึก ก็อาจจะสร้าง โค้ดไว้ล้างข้อมูลที่กรอกลงไป ทั้งหมดก็ได้
               กรณีต้องการลบข้อมูลเก่าทิ้ง อาจจะใช้ Delete Query หรือโค้ดในการลบระเบียน ที่ต้องการ

ถ้าไม่ถนัดเขียนโค้ด ก็สามารถสร้างฟอร์มที่อยากได้ แล้วมีปุ่มต่างๆ ที่ต้องการแล้วส่ง Inbox มาผมจะใส่โค้ดให้ได้ครับ

481
สาเหตุนี้เกิดกับข้อมูลที่เป็น ข้อความหริอ string ไม่ใช่ตัวเลขครับ
สามารถใช้  Val ช่วย แปลง string เป็นตัวเลขเช่น

SELECT *  FROM [ชื่อตารางหรือคิวรี่] Order by Val([ประสบการณ์/ความรับผิดชอบนการทำงาน]);

482
น้องไปแก้ Event ของ คอมโบบ๊อก cb_district AfterUpdate  เป็นแบบนี้นะครับ

Private Sub cb_district_AfterUpdate()
    Me.txt_zipcode = DLookup("post_code", "tb_district", "district_th= '" & Replace(Me.cb_district, "แขวง", "") & "' AND amphur_id = " & Me.cb_amphur.Column(0, Me.cb_amphur.ListIndex))
End Sub

โดยเครื่องแสกนถ้าได้คำว่าแขวงติดมา แต่ตอนจะแสดงข้อมูลเราใช้ Replace ตัดแขวงออกให้ก็จะแสดงข้อมูลได้ปกติ

483
มันเป็นลักษณะคำสงวนของ MS Access (Wildcard Characters) ลองเพิ่ม single quote เป็นสองตัวดูครับว่าเจอป่าว
SQL = "SELECT Title, Name, Surname " _
        & "FROM Employee " _
        & "WHERE Name = N''" & Me.txtSearchName & "''"

ลองแล้ว ยังไม่ได้ค่ะ

รบกวนสอบถามนะครับว่าทำไมต้องใช้ datatype แบบ Nvarchar ใช้ Varchar ไม่ได้หรือครับ แบบไม่ใช่ข้อมูล Unicode
เพราะเก็บพวกชื่อ นามสกุลพนักงาน Varchar จะไม่มีปัญหาเรื่องพวกนี้เลย
เพราะถ้าเก็บชื่อพนักงาน Varchar สามารถเก็บ ชื่อภาษาไทย และ อังกฤษได้อยู่แล้ว
ผมสอบถามนะครับพอดีไม่ได้ใช้ SQL SERVER

ปล เปลี่ยนเป็น Varchar ได้ไหม  :cool: :cool:

484
สร้างคิวรี่ขึ้นมาใช้ Replace เพื่อ ตัดคำออกเอาเฉพาะชื่อจังหวัดเช่น จ.ขอนแก่น หรือ จังหวัดขอนแก่น จะเหลือ ขอนแก่น ครับ
ส่วนอำเภอกับตำบลใช้วิธีเดี่ยวกันครับ
ในแต่ละฟิลล์ใส่โค้ดตัดคำแบบนี้เข้าไปนะครับ

จังหวัด: Replace(Replace([province],"จ.",""),"จังหวัด","")
อำเภอ: Replace(Replace([district],"อ.",""),"อำเภอ","")
ตำบล: Replace(Replace([Sub-district],"ต.",""),"ตำบล","")

เมื่อใช้ Replace แล้วก็นำคิวรี่นี้แหละไป Join Table ให้ได้เลขไปรษณีย์
ถ้าข้อมูล File Address มีคำว่าอำเภอก็ตัดคำที่ไม่ต้องการออกไปให้เหมือนกัน ก็ใช้ได้แล้วครับ

ผมมีตัวอย่าง อีกวิธี

โดยต้องตัดคำว่าแขวง ตัดคำว่าเขต ตัดคำว่าอำเภอ ตัดคำว่าจังหวัดออกไป
โดยการค้นหาคือ ค้นจาก ตำบล อำเภอ จังหวัด เรียงกันแบบนี้ แล้วจะได้รหัสไปรษณีย์นะครับ
เช่น ทุ่งพญาไท ราชเทวี กรุงเทพมหานคร จะได้ 10400
      บางรัก บางรัก กรุงเทพมหานคร จะได้ 10500 เป็นต้น
วิธีนี้ก็ใช้ประยุกต์กับชุดข้อมูลที่อยู่จาก เครื่องแสกนได้ลองไปทดสอบดูครับไม่รู้จะใช้ได้หรือเปล่า
โดยให้ดูการเชื่อมข้อมูลจาก Query DATA

485
อ่อ ใช้ N” prefix นิเองเดี่ยวผมหาวิธีแปป

486
ปกติหน้ารายงานที่ต้องการขึ้นหน้าใหม่จะใช้
โดยเอาไปวางไว้บนบรรทัดที่ต้องการขึ้นหน้าใหม่

หน้า: 1 ... 24 25 26 [27] 28 29 30 ... 46