แสดงกระทู้

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 ... 26 27 28 [29] 30 31 32 ... 46
505
ถูกต้องครับ คือถ้ากำหนด nEmployee datatype เป็น Integer ต้องกำหนดค่าเป็นตัวเลข
ถ้ากำหนด 01 คือการกำหนดเป็น string ครับ

506
ขอปรับปรุงเป็นแบบนี้นะครับ
คือเวลาเราจะอ้างอิงไปที่ซัพฟอร์มเราต้องเริ่มจาก MainForm ไปหา Subform
Private Sub Command21_Click()
Forms![attend query]![regist query subform].Form.Filter = "[std name] like '*" & Me.txtsearch & "*'"
Forms![attend query]![regist query subform].Form.FilterOn = True
End Sub

507
ลองแก้ sql ของรายงานเป็นแบบนี้นะครับ

โค๊ด: [Select]
SELECT PartRequestList.Request_No, PartRequestList.Request_Date, PartRequestList.Company_ID, tb_CompanyData.CompanyName, PartRequestList.ProcessID, tb_ProcessData.ProcessName, PartRequestList.RecordByID, EmplayeeRecord.EplName, PartRequestList.RequestByID, EmplayeeRequest.EplName, qry_RequestDetail.PartName, qry_RequestDetail.Material, qry_RequestDetail.Qty, qry_RequestDetail.Unit FROM tb_ProcessData INNER JOIN (EmplayeeRecord INNER JOIN (EmplayeeRequest INNER JOIN (tb_CompanyData INNER JOIN (PartRequestList INNER JOIN qry_RequestDetail ON PartRequestList.Request_No = qry_RequestDetail.Request_No) ON tb_CompanyData.Company_ID = PartRequestList.Company_ID) ON EmplayeeRequest.Epl_ID = PartRequestList.RequestByID) ON EmplayeeRecord.Epl_ID = PartRequestList.RecordByID) ON tb_ProcessData.ProcessID = PartRequestList.ProcessID;

508
ห้อง MS Access / : Report แบบกำหนดเอง
« เมื่อ: 27 พ.ค. 63 , 18:58:31 »
https://www.thai-access.com/index.php?topic=307.0
ใช้การเลือกโดยใช้ check box ได้ไหมครับ

รหัสสินค้ามีเยอะไหมถ้าไม่เยอะก็ใช้ list
box ช่วยก็ได้ครับเป็นการเลือกแบบ multi value

509
ห้อง MS Access / : Report แบบกำหนดเอง
« เมื่อ: 27 พ.ค. 63 , 12:47:13 »
สร้างฟอร์มสำหรับกำหนด รหัสสินค้า แล้วมีปุ่มเปิดรายงาน
โดยที่ปุ่มรายงานจะแสดงรายงาน โดยใช้เงื่อนไขให้แสดงเฉพาะ รหัสสินค้าที่ระบุในฟอร์มรายงานเท่านั้นครับ
แต่การจะกำหนดรหัสสินค้าที่ต้องการ คุณจะเลือกใช้อะไรในการระบุรหัสสินค้าครับ

510

ลองไปทดสอบดูนะครับ ผมใช้การจับลำดับของ combobox โดยใช้ Active Control
สาย DIY อีกแล้วนะครับอิอิ โดยใช้ Call select_case ใน Event AfterUpdate() ทุกอันนะครับ
โดยผมจะกำหนด combobox เป็น Nboss_1 แทนของเดิมคือ 01 นะครับ
ข้อดีมีโค้ดชุดเดียวมีกี่ combobox ก็ได้ครับไม่จำกัด

เช่น
Private Sub Nboss_1_AfterUpdate()
Call select_case
End Sub
Private Sub Nboss_2_AfterUpdate()
Call select_case
End Sub
Private Sub Nboss_3_AfterUpdate()
Call select_case
End Sub
Private Sub Nboss_ลำดับ N_AfterUpdate()
Call select_case
End Sub

โค๊ด: [Select]
Sub select_case()
Dim strTextName,GetString,GetNum As String

strTextName = ActiveControl.Name
GetNum = Right(strTextName, Len(strTextName) - InStrRev(strTextName, "_"))
Me("ne_" & GetNum) = Me(strTextName).Column(4)
GetString = Me(strTextName).Column(4)

Select Case GetString
        Case "Undead": Me("WinNE_" & GetNum).Value = "Fire"
        Case "Earth": Me("WinNE_" & GetNum).Value = "Fire"
        Case "Fire": Me("WinNE_" & GetNum).Value = "Water"
        Case "Water": Me("WinNE_" & GetNum).Value = "Wind"
        Case "Wind": Me("WinNE_" & GetNum).Value = "Earth"
        Case "Poison": Me("WinNE_" & GetNum).Value = "Holy"
        Case "Shadow": Me("WinNE_" & GetNum).Value = "Holy"
        Case "Holy": Me("WinNE_" & GetNum).Value = "Shadow"
       Case Else: Me("WinNE_" & GetNum).Value = ""
    End Select
 
End Sub

511
ดูจากธาตุแล้ว นึกถึง ragnarok ขึ้นมาเลยครับ Hunter สายล่าบอส  :cool: :cool:
ลองคิดแปปครับ
แต่อาจจะต้องใส่ Nboss_01_AfterUpdate() ด้วยคำสั่ง Call กับ textbox Nboss_01 ถึง 30 นะครับ

512
งั้นแก้จากแบบเดิมที่มีการอ้างอิง mainform มาใส่แบบนี้ครับ

=DSum("[Qty]","[IncomingMove]","[PartID]='" & [txt_PartID] & "'")

สาเหตุที่ค่าผิดพลาดเพราะเมื่อเราเปิดเฉพาะ Subform
การอ้างอิงผิดพลาดตรงที่เราจะอ้างอิง MainForm ด้วย
ให้แก้ใหม่ครับ

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

ถ้าทำแบบง่ายก็คือ
1.ให้นำเข้าข้อมูลตามบัตรประชาชนทั้งหมดเข้ามาก่อนไปยังตารางสำรอง สมมุติชื่อว่า TempImport นะครับ
2.ใช้การสร้างคิวรี่ โดยกำหนดให้เลือกเอาเฉพาะ รหัสที่ไม่มีในตารางหลัก สมมุติชื่อว่า tblDataMain นะครับ
3.มี Field เก็บเลขบัตรประชาชนชื่อเดียวกันคือ PersonalID


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

Private Sub Command0_Click()
'ตัวอย่างโค้ดการนำเข้าข้อมูลโดยมี Dialog ให้เลือกไฟล์เข้ามา
Dim dlg As FileDialog
Dim sql, Deletesql As String
Dim DB As DAO.Database
Set DB = CurrentDb
If MsgBox("คุณต้องการนำเข้าข้อมูลใหม่หรือไม่", vbQuestion + vbYesNo, "ระบบสอบถาม") = vbYes Then

Set dlg = Application.FileDialog(msoFileDialogFilePicker)

With dlg
.Title = "Select the Excel file to import"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "Excel Files", "*.xls*", 1
.Filters.Add "All Files", "*.*", 2

If .Show = -1 Then
StrFileName = .SelectedItems(1)

Deletesql = "DELETE * FROM TempImport;" 'สั่งให้ลบข้อมูลของตารางสำรองให้หมดก่อนเพื่อรอรับข้อมูลนำเข้าใหม่ที่จะเข้ามา
DB.Execute Deletesql

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "TempImport", StrFileName, True 'นำเข้าไปยังตารางชื่อ TempImport
Else
Exit Sub
End If
End With

'หลังจากนำเข้ามาเสร็จให้ทำการ Append ข้อมูลที่ รหัสประจำตัวประชาชนไม่ซ้ำกัน ไปยังตารางหลักของเรา
sql = "INSERT INTO tblDataMain SELECT * FROM TempImport WHERE (((TempImport.PersonalID) Not In (select [PersonalID] from [tblDataMain])));"
DB.Execute sql
If DB.RecordsAffected <= 0 Then
   MsgBox "ไม่มีข้อมูลที่นำเข้า."
Else
MsgBox "นำเข้าจำนวน " & DB.RecordsAffected & " เรคคอร์ด", vbInformation, "Myprogram"
End If
Set DB = Nothing
End If
End Sub



514
ลองดูตัวอย่างนี้

515
ลองอ้างอิง แบบนี้ดูครับถ้าตัว textbox อยู่ในซัพฟอร์มให้อ้าง Mainform ไปหา Subform และไปยังตัว Control ครับ
และในกรณีที่ PartID เป็นtext ให้ใส่ เครื่องหมาย '  (single quote) ด้วยครับ
โค๊ด: [Select]
=DSum("[Qty]","[IncomingMove]","[PartID]='" & [Forms]![frm_IncomingSheet]![frm_IncomingList].[Form]![txt_PartID] & "'")

516
หนูมีคิวรี่อยู่1ตัวนะคะ สมมติมีอยู่2คอลั่มคือ Exp1 กับ Exp2 ค่ะ

Exp1 ผูกกับตารางข้อมูลเป็นtext เก็บขัอมูล yes กับ no
ส่วน Exp2 นั้นไม่ได้ผูกกับตารางใดๆ

ความต้องการของหนูในการแสดงคิวรี่ก็คือ
เมื่อข้อมูลในExp1 เป็น yes ให้แสดงข้อความใน Exp2 ว่า "สินค้าพร้อมส่ง"
แต่หากข้อมูลในExp1 เป็น no ก็ให้แสดงข้อความใน Exp2 ว่า "สินค้าหมดแล้ว"
ประมาณนี้ค่ะอาจารย์ ขอรบกวนด้วยนะคะ
หนูต้องการเอาคิวรี่นี้ไปสร้างเป็นรายงานต่อค่ะอาจารย์

ในคิวรี่ใส่ SQL แบบนี้ได้เลยกรณีที่เก็บข้อความ Yes กับ No โดยอยู่ในตารางชื่อ Table1
โค๊ด: [Select]
SELECT IIf([Exp1]="yes","สินค้าพร้อมส่ง") & IIf([Exp1]="NO","สินค้าหมดแล้ว") AS Exp2, *
FROM Table1;

กรณีที่เก็บข้อมูลโดยใช้ Checkbox เก็บ Yes No ในคิวรี่ใส่แบบนี้
โค๊ด: [Select]
SELECT IIf([Exp1]=True,"สินค้าพร้อมส่ง") & IIf([Exp1]=False,"สินค้าหมดแล้ว") AS Exp2, *
FROM Table1;

517
ห้อง MS Access / : หาค่า Min จาก Query Access
« เมื่อ: 19 พ.ค. 63 , 21:46:49 »
ได้ความรู้ใหม่ครับอาจารย์สันติสุข คือการกำหนดเงื่อนไข ในวงเล็บไว้ก่อน F0 แล้วค่อยแสดงผล
ขอบคุณครับ
 :love: :love: :miao:

ผมเพิ่ม NZ() Function เพื่อให้ ฟิลล์ ที่มีค่า 0 ทุกฟิลล์ แสดง 0 ครับจะได้สมบูรณ์ยิ่งขึ้น

select ID, F1, F2, F3 , nz(min(F0),0) as FMin
from
(              select ID, F1, F2, F3, iif(F1 = 0, NULL, F1) as F0 from T
  union all select ID, F1, F2, F3, iif(F2 = 0, NULL, F2) as F0 from T
  union all select ID, F1, F2, F3, iif(F3 = 0, NULL, F3) as F0 from T)
group by ID, F1, F2, F3
order by ID

518
อ้างถึง
แต่ในชุดข้อมูลของผม ไม่มีอายุ 1 -5 ปีครับ 
แต่พอกรองข้อมูลแล้ว มันก็ยังขึ้นข้อมูลอื่นที่ อายุ มากกว่า 1 - 5 ปี

ลองอธิบายการกรองข้อมูลมานิดนึงนะครับ ว่าผิดตรงไหน

ที่ Criteria ของ Query ลองใส่ไปว่า  Between 1 and 5 
เพื่อให้ได้ อายุระหว่าง 1 ถึง 5 ปี

อีกอย่างหนึ่งที่เกิดขึ้นได้กับการกรอง
คือ Field อายุที่คุณกรองอยู่นั้น Datatype เป็น text ทำให้การกรองผิดพลาดได้ครับ
วิธีแก้คือใช้ Cint() แปลงเป็นตัวเลขก่อนแล้วใช้ Criteria ของ Query


สมมุติ Field Age คือ fieldอายุ datatype ไม่ใช่ตัวเลข
ตารางใช้กรองชื่อ table1

sql ก็ประมาณนี้

SELECT * FROM Table1 WHERE (((CInt([Age])) Between 1 And 5));

ข้อมูลในตาราง table1 จะแสดงทุกฟิลล์ และจะกรองฟิลล์อายุ ช่วง 1-5  หรือช่วงอายุที่เราต้องการให้เราครับ

519
ห้อง MS Access / : เปิด Query ไม่ได้
« เมื่อ: 18 พ.ค. 63 , 10:48:53 »
เจอปัญหาเปิด Query ไม่ได้ค่ะ ขึ้นแจ้งเตือนตามภาพค่ะ



1.เช็ค Network Drive ว่ายังเชื่อมต่ออยู่หรือไม่

2.compact and repair ใหม่ซักรอบ

3.เช็คว่าตำแหน่งของ File StockCard นั้นอยู่ในตำแหน่งนั้นจริงหรือไม่(เช็คที่ การจัดการการเชื่อมโยง)



520
สอบถามครับ โดยแยกเป็นคำถามดังนี้ครับ หลังการ เพิ่ม record ใหม่แบบ(Append) หลังจากนำเข้าข้อมูลเรียบร้อยแล้ว อยากให้มีข้อความแจ้งจำนวนที่นำเข้าไปครับ และ คำถามที่ 2 เป็นการ update เช่นกันครับ อยากให้แจ้งจำนวน record ที่ได้มีการ update เข้าไป  เช่น  นำเข้าทั้งหมด xxx Record เรียบร้อยแล้ว ,  ปรับปรุงข้อมูลจำนวน xxx Record เรียบร้อยแล้ว  ประมาณนี้ครับ   ขอบคุณครับ

ลองดูตัวอย่างจากกระทู้นี้ครับ

https://www.thai-access.com/index.php?topic=1231.msg5428#msg5428

521
รบกวนสอบถามอาจารย์ครับ ผมต้องการทำ ปุ่ม เพื่อจะลบ table ชื่อ table1 ออกจากฐานข้อมูล อยากให้โปรแกรมตรวจสอบก่อนว่ามีตาราง table1 อยู่หรือไม่ ถ้าไม่มี ให้ข้ามไปทำขั้นตอนต่อไป ถ้ามีให้ลบก่อน แล้ว ทำตามขั้นอื่นตอนต่อไป ขอบคุณครับ
ลองทดสอบดูนะครับ

Private Sub Command0_Click()
 call CheckTableToDelete
End Sub

Sub CheckTableToDelete
 Dim tbd As TableDef
  Dim msg As String
  For Each tbd In CurrentDb().TableDefs
    If tbd.Name = "table1" Then
     msg = MsgBox("ตรวจพบตาราง Table1" & vbCrLf & "คุณต้องการลบตาราง ? ", vbQuestion + vbYesNo, "ระบบสอบถาม")
     If msg = vbYes Then
        DoCmd.DeleteObject acTable, "table1"
     End If
End If
  Next tbd
End Sub

522
ขอบคุณครับอาจารย์ เดี๋ยวจะลองแบบนี้ดูครับ
จากโพสบนได้ปรับปรุงโค้ดนิดหน่อยนะครับ กรณีที่ครบ 15 ทุกหน้าก็ให้ทำงานตามปกติ ไม่ต้อง Addrow

หน้า: 1 ... 26 27 28 [29] 30 31 32 ... 46