แสดงกระทู้

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 ... 6 7 8 [9] 10 11 12 ... 32
145
แก้เป็นแบบนี้ครับ ในส่วนของ Import()

โค๊ด: [Select]
Sub Import()
    Dim strPath As String
    Dim strFile As String
    Dim strTable As String
    Dim StrFileName As String
    Dim strextensionNew As String
   
    strTable = "Table1"
    strPath = "D:\textfile\"
    strFile = Dir(strPath & "*.txt")
   
    Do While strFile <> ""
    StrFileName = strPath & strFile
    DoCmd.TransferText acImportDelim, "", strTable, StrFileName, False
    strextensionNew = Left(StrFileName, InStrRev(StrFileName, ".") - 1) & ".xxx"
   
    If Len(Dir$(strextensionNew)) > 0 Then
                Kill strextensionNew
    End If
    Name StrFileName As strextensionNew

    strFile = Dir(strPath & "*.txt")
    Loop
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: kapiak

146
จากตัวอย่างลองเปิด form frmExpBooking ขึ้นมา
จะแสดง Jobno และรายละเอียดคร่าวๆ ของ Jobno นั้น

เวลาจะเข้าไประบุ truckNo ให้ดับเบิ้ลคลิกที่ เรคคอร์ดที่ต้องการ จะเข้าไปสู่หน้าของการระบุ truckno และรายละเอียดต่างๆครับ

ดูจากงานของท่านแล้ว ต้องศึกษาการทำ Normalization ก่อนเป็นอันดับแรกเลย
เพราะท่านรวบรวมข้อมูลต่างๆ ไว้ด้วยกันทั้งหมด ผมว่าไม่เวิคครับ

ลองดูจากตัวอย่างนี้ไปเป็นแนวทางในการปรับในส่วนอื่นๆก็ได้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

147
อ้างถึง
ค้าอยากให้เพิ่ม PO Truck Number เป็นโมดูลใหม่เพื่อออกบิลให้ Supplier
วิธีในการออก PO Truck Number มีขั้นตอนการออกอย่างไร

อ้างถึง
ใครมีไอเดียที่สามารถใส่ เลขทะเบียนรถ ได้มากกว่า 1 คัน โดยไม่ต้องทำ Table แยกเป็น Truck 1/ Truck 2........ บ้างครับ
ไม่ต้องแยก Truck1 / Truck2
หรอกครับ
แต่ในตารางก็จะต้องมี
ตาราง Jobno ตารางนี้สร้างขึ้นมาไว้กำหนดรายละเอียดของ Job เช่น
JobNo
CustomerName
Tel
ฯลฯ

ส่วนตารางใหม่ที่น่าจะทำ
JobNo ไว้กำหนด RelationShip
TruckNumber ไว้กำหนดลำดับ Truck จะทำให้ Auto ก็ได้ หรือระบุเองก็ได้
TruckID  ฟิลล์นี้เก็บทะเบียนรถ

คุณสมบัติตารางเป็นแบบ Many
Jobno ต้องซ้ำได้

ข้อดีคือ ใน 1 Jobno มีรถกี่ค้นก็ได้เป็น 100 คันก็ได้ เพราะข้อมูลกำหนดเป็น Row ไม่ใช้ Column แบบที่คุณทำ

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

148
ที่ Cell A3 ใส่ IF เข้าไป
เช่น

=IF(A1>A2,"กำไร",IF(A1<A2,"ขาดทุน"))

แต่ฝากให้คิดเพิ่มนะครับ กรณี A1 และ A2 เท่ากันจะให้แสดงว่าอะไร  :miao:
สมมุติว่ามีก็จะใส่แบบนี้ได้เลย

=IF(A1>A2,"กำไร",IF(A1<A2,"ขาดทุน",IF(A1=A2,"เสมอตัว")))
โพสต์นี้ได้รับคำขอบคุณจาก: มาลี

149
ถ้าทุกๆตาราง มีฟิลล์ใน  textbox1a , textbox2a , textbox3a เหมือนกัน
ใช้แบบนี้ได้เลย

โค๊ด: [Select]
If Not IsNull(Me.comboboxSelectTable) Then
Forms("form1a").Form.RecordSource = Me.comboboxSelectTable
End If
โพสต์นี้ได้รับคำขอบคุณจาก: wacharapojj

150
ห้อง MS Access / : สอบถามการเขียนครับ
« เมื่อ: 08 มี.ค. 64 , 15:28:44 »
โค๊ด: [Select]
IF IsNull(CmbG) Then
Me.CmbG.SetFocus
Msgbox "CMBG ว่าง!!!"
Else
IF Not IsNull(Me.JobNo) Then
Msgbox "มีการกำหนด JobNo ไว้แล้ว"
Exit Sub
else
Me.JobNo = AutotxtID
End if
End if

แก้เฉพาะปุ่ม CommandBotton นะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

151
จากForm ในไฟล์ที่แนบไว้ครับ
ผมต้องการทำให้ เวลากดเลือก combo box อันแรก แล้ว combo box อันต่อไป ขึ้นมาให้เลือกตามเงื่อนไขที่เลือกไว้ใน combo box อันแรก ต้องเขียนคำสั่ง หรือต้องทำยังไงได้บ้างครับ

เช่น นายA และนายB อยู่ใน section 1 เมื่อผมเลือก section 1 ในฟอร์ม แล้วต้องการให้ customer-nm ขึ้นมาให้เลือกแค่ นายA หรือนายB ครับ (ไม่ให้ขึ้น นายC นายD นายE นายF เพราะอยู่คนละ section)

รบกวนผู้รู้หน่อยนะครับ ขอบคุณครับ

เวลาตั้งชื่อ control พยายามอย่าให้ใส่คำเฉพาะที่มีในโปรแกรม ให้ใส่ชื่อย่อของแต่ละประเภท Control 
คำว่า section เป็นชื่อส่วนหนึ่งของคำสั่ง
ถ้าเป็น combobox ก็ให้ใส่ Cb_Section หรือ cboSection เข้าไปเพื่อให้ไม่เหมือนกับคำสั่งในระบบครับ

ส่วนการที่จะให้รายการ ของคอมโบที่สองเปลี่ยนตามอันแรกก็ให้กำหนด Rowsource กำหนด Criteria ฟิลล์ที่เลือกในคอมโบ Criteria ด้วย
โพสต์นี้ได้รับคำขอบคุณจาก: Pgh

152
สามารถใช้ SourceObject ในการกำหนดให้ตารางต่างๆ มาแสดง
โดยจะมีฟอร์มหลักที่มี combobox หรือ Control อื่นๆ ไว้ในการเลือกชื่อตารางมาแสดง

โค้ดที่ปุ่ม Commandbotton เช่น

If Not IsNull(Me.comboboxSelectTable) Then
Forms("frmmain").Form.MySubFrm.SourceObject = "table." & Me.comboboxSelectTable
End If

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

153
ใส่ =[CurrentRecord] ในลงไป ControlSource ได้เลย

หรือ Event Form Current
ใส่
Private Sub Form_Current()
Me.Text10 = CurrentRecord
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: pattaya48150

154
จริงด้วยเพิ่งสังเกตุเหมือนกันครับ
คราวนี้เจ้าของกระทู้คงสามารถทำได้เองแล้วนะครับ  :cool:
ถ้าถามใหม่ขอโจทย์ใหม่ๆ นะครับ

โจทย์นี้สอบผ่านได้แล้วนะ หยอกๆ  :shout: :shout: :XD:
โพสต์นี้ได้รับคำขอบคุณจาก: pattaya48150

155
ข้อที่ 1
โค๊ด: [Select]
SELECT [แฟ้มข้อมูลรายการอาหาร].[รหัสอาหาร], [แฟ้มข้อมูลรายการอาหาร].[ชื่อ]
FROM แฟ้มข้อมูลรายการอาหาร LEFT JOIN แฟ้มข้อมูลการสั่งอาหาร ON [แฟ้มข้อมูลรายการอาหาร].[รหัสอาหาร] = [แฟ้มข้อมูลการสั่งอาหาร].[รหัสอาหาร] WHERE ((([แฟ้มข้อมูลการสั่งอาหาร].[รหัสอาหาร]) Is Null));

ข้อที่ 2
โค๊ด: [Select]
SELECT TOP 1 [แฟ้มข้อมูลการสั่งอาหาร].[รหัสอาหาร], [แฟ้มข้อมูลรายการอาหาร].[ชื่อ]
FROM แฟ้มข้อมูลรายการอาหาร INNER JOIN แฟ้มข้อมูลการสั่งอาหาร ON [แฟ้มข้อมูลรายการอาหาร].[รหัสอาหาร] = [แฟ้มข้อมูลการสั่งอาหาร].[รหัสอาหาร] GROUP BY [แฟ้มข้อมูลการสั่งอาหาร].[รหัสอาหาร], [แฟ้มข้อมูลรายการอาหาร].[ชื่อ]
ORDER BY Sum([แฟ้มข้อมูลการสั่งอาหาร].[จำนวนที่สั่ง]) DESC;
โพสต์นี้ได้รับคำขอบคุณจาก: pattaya48150

156
ห้อง MS Access / : สอบถามผู้รู้ด้วยครับ
« เมื่อ: 02 มี.ค. 64 , 14:18:00 »
ผมมีคำถามอยู่ 2ข้อครับ ทำในคิวรี่ครับ รบกวนช่วยแนะด้วยครับ
1.อยากให้แสดงฟิลด์ รหัสอาหาร,ชื่อ, อาหารทีไม่มีการสั่งซื้อ
2.อยากให้แสดงฟิลด์ รหัสอาหาร,ชื่อ, อาหารที่มีการสั่งซื้อมากที่สุด

ข้อที่ 1
โค๊ด: [Select]
SELECT Product.ProductID, Product.ProductName FROM Product
WHERE (((Product.ProductID) Not In (select ProductID from [SaleDetail])));
อาหารทีไม่มีการสั่งซื้อ(คือไม่มีการสั่งซื้อในตาราง Saledetail จะถูกนำมาแสดง)

ข้อ 1 ที่แนะนำ ถ้านำไปใช้สอบ น่าจะใช้แบบนี้
โค๊ด: [Select]
SELECT Product.ProductID, Product.ProductName
FROM Product LEFT JOIN SaleDetail ON Product.ProductID = SaleDetail.ProductID
WHERE (((SaleDetail.ProductID) Is Null));
เป็นการ Join table และหาค่า Null ของอีกตาราง

ข้อที่ 2
โค๊ด: [Select]
SELECT TOP 1 SaleDetail.ProductID, Product.ProductName
FROM Product INNER JOIN SaleDetail ON Product.ProductID = SaleDetail.ProductID
GROUP BY SaleDetail.ProductID, Product.ProductName
ORDER BY Sum(SaleDetail.Quant) DESC;

ใช้ Sum() ในการหาผลรวมของจำนวนที่สั่งซื้อ
และใช้การเรียงลำดับจากมากไปหาน้อย ORDER BY Sum(SaleDetail.Quant) DESC
้ใช้การกำหนด TOP 1 เพื่อแสดงค่าที่สูงที่สุดเพียง 1 เดียว
โพสต์นี้ได้รับคำขอบคุณจาก: pattaya48150

157
อ้าว ลบข้อมูลออกทำไมอะครับ เผื่อจะมีประโยชน์กับคนอื่นในอนาคต

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

อ้างถึง
ตอนนี้ผมต้องการเพิ่มข้อมูลเลข Serial ลงใน BillDetail ซึ่งแตกต่างกันในแต่ละระเบียน
"เลขซีเรียล" มาจากไหนมีวิธีการระบุอย่างไร
เราสามารถเปิด Recordset ทั้ง 2 ขึ้นมา แล้วใช้ Loop มาทำกับทุกระเบียนได้ครับ แต่ต้องรู้วิธีได้มาของ เลขที่ที่กำหนดขึ้นใหม่ และ เลขซีเรี่ยลที่กำหนดขึ้น ก่อนว่าสร้างมาอย่างไร




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

158
หรือจะใช้ คิวรี่ Update แบบนี้ก็ได้เหมือนกัน

Dim SQL As String
SQL = "UPDATE Table2 SET Table2.Type_Job = [forms]![FORM1]![Type_Job] " _
& "WHERE (((Table2.ID)=[Forms]![FORM1]![ID]));"
DoCmd.SetWarnings False
DoCmd.RunSQL SQL
DoCmd.SetWarnings True
Forms![FORM1].[ฟอร์มย่อย Table2].Requery
โพสต์นี้ได้รับคำขอบคุณจาก: Witthaya Soree

159
 ID datatype เป็นอะไรครับ
ถ้าเป็นข้อความเพิ่ม ' ด้วย

เช่น
 rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT*FROM Table2 WHERE Table2.ID = '" & Forms![Form1]![ID] & "'")
โพสต์นี้ได้รับคำขอบคุณจาก: Witthaya Soree

160
ลองปรับ criteria เป็น
LIKE Nz([Forms]![ReportMA]![txtTruck],"*")


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

161
TruckNo คือเลขทะเบียนรถใช้ใหมครับ ?
Criteria ให้อยู่ในบรรทัดเดียวกันได้เลย
ไม่ต้องมี Like ครับ

จากตัวอย่างของคุณ เอา Between.... ขึ้นมาอีก 1 บรรทัดครับ แล้วดูผลใหม่

ถ้าไม่ได้ขอดูคำสั่ง Forms!...... ตรงส่วนของ Criteria หน่อย
โพสต์นี้ได้รับคำขอบคุณจาก: pattan0013

162
ถ้าตารางของซัพฟอร์ม ชื่อ table2
ปรับปรุงทุกระเบียนที่มีในตารางโค้ดจะเป็น

Private Sub txtTypeJob_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Table2")
   rs.MoveFirst
   Do Until rs.EOF
   rs.Edit
   rs![Type_Job] = Me.txtTypeJob
   rs.Update
   rs.MoveNext
 Loop
rs.Close
Set rs = Nothing
Forms![frmMain].[SubFrm].Requery
End Sub


ถ้ามีการปรับปรุงข้อมูล โดยแยกตาม ID ก็ใส่แบบนี้
Private Sub txtTypeJob_AfterUpdate()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Table2 WHERE Table2.ID = " & [Forms]![frmMain]![txtID] & "")
   rs.MoveFirst
   Do Until rs.EOF
   rs.Edit
   rs![Type_Job] = Me.txtTypeJob
   rs.Update
   rs.MoveNext
 Loop
rs.Close
Set rs = Nothing
Forms![frmMain].[SubFrm].Requery
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Witthaya Soree

หน้า: 1 ... 6 7 8 [9] 10 11 12 ... 32