แสดงกระทู้

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 - Eakaluk Sansila

หน้า: [1]
1
จบเคสนะครับ รีโมทไปแก้ให้แล้ว  :cool: :cool:
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

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

ผมสงสัยครับว่าคุณไปสร้างการลบตรงส่วนไหน
ถ้าเราใช้การเช็คแบบนี้
เราคงต้องแก้ไปเป็นแบบนี้
if me.TextAmt> me.Text_remain then
msgbox "คงเหลือไม่พอให้เบิก"
me.TextAmt = null
else
me.Text_remain = DSum("[จำนวน]","[รายการนำเข้าสินค้า]","[รหัสสินค้า]=" & [txt_รหัสสินค้า])-Nz(DSum("[จำนวนสินค้า]","[รายการสินค้า]","[รหัสสินค้า]=" & [txt_รหัสสินค้า]))
end if

ความน่าจะเป็นคือ
ถ้าไม่ผ่านเงื่อนไข

เมื่อรายการเบิกมากกว่าจำนวนที่มี ต้องแจ้งเตือนและให้แสดงรายการเบิกเดิมที่มีขึ้นมา และลบค่าที่กรอกใน TextAmt เพื่อให้กรอกค่าใหม่

ส่วนกรณีเงื่อนไขผ่าน
ก็ให้ทำการคำนวนค่าได้

ปล.ลบสูตรคำนวนที่ ControlSource ของ Text_remain ออกไปก่อนนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

3
ผมลืมไปของท่าน ติด File dll ทำให้ไม่สามารถทำอะไรได้เลยครับ
คราวก่อนก็เป็น
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

4
ส่งตัวอย่างมาทาง inbox ผมดูให้ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

5
สมมุติ TextBox ที่คำนวณคงเหลือ ชื่อ Text_remain และ TextBox ที่คีย์จำนวนเบิกชื่อ TextAmt
if TextAmt> Text_remain then
msgbox "คงเหลือไม่พอให้เบิก"
else
// ทำการเบิก
end if
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

6
ทำบนฟอร์มหรือเปล่าครับ ที่จริงแล้ว ไม่ใช่แค่สินค้ามีค่าเป็น 0 นะครับ
วิธีการผมว่าน่าจะสร้างการเปรียบเทียบจำนวนคงเหลือ กับ จำนวนเบิกด้วย เช่น
สินค้าคงเหลือ = 3 แต่เบิก = 5 แบบนี้ก็ไม่ได้อยู่แล้ว มันติดลบ
ใช้ IF check ก็ได้เช่น

IF สินค้าเบิก > สินค้าคงเหลือ or สินค้าเบิก = "0" Then
msgbox "ไม่สามารถเบิกได้เกินจำนวนที่มีอยู่ คงเหลือปัจจุบัน" & สินค้าคงเหลือ & " อัน"
End if

แบบนี้ก็ได้นะครับ ไม่ยุ่งยากด้วย
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

7
ทำบนฟอร์มหรือเปล่าครับ ที่จริงแล้ว ไม่ใช่แค่สินค้ามีค่าเป็น 0 นะครับ
วิธีการผมว่าน่าจะสร้างการเปรียบเทียบจำนวนคงเหลือ กับ จำนวนเบิกด้วย เช่น
สินค้าคงเหลือ = 3 แต่เบิก = 5 แบบนี้ก็ไม่ได้อยู่แล้ว มันติดลบ
ใช้ IF check ก็ได้เช่น

IF สินค้าเบิก > สินค้าคงเหลือ or สินค้าเบิก = "0" Then
msgbox "ไม่สามารถเบิกได้เกินจำนวนที่มีอยู่ คงเหลือปัจจุบัน" & สินค้าคงเหลือ & " อัน"
End if
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

8
คำถามไม่เคลียร์ก็ทำให้คนตอบ ตอบยากนะครับ ควรอธิบายที่มาให้ซักหน่อย ว่าคุณทำอะไร ปัญหาคืออะไร อยากได้คำตอบอะไร รูปประกอบ, code ก็สำคัญนะครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

9
คือคำถามคุณกว้างมากจนไม่รู้จะตอบอย่างไร
ก่อนอื่นคุณต้องถามตัวเองก่อนว่าถ้าไม่ต้องการให้ติดลบแล้วต้องการอย่างไรต่อครับ
1. ต้องการว่าถ้าค่าติดลบ แล้วให้แสดงเป็น 0 แทน
2. ต้องการว่าถ้าค่าติดลบแล้วให้ใส่ข้อมูลนั้นไม่ได้
3. ต้องการว่าถ้าค่าที่จะใส่แล้วทำให้ติดลบ ก็แนะนำว่าให้ใส่ค่าอะไรที่จะพอดีออกมาเป็น 0 แทน

อันนี้ผมคิดแบบฉุกเฉินก็ได้ตั้ง 3 แบบ แล้ว ดังนั้นต้องตอบตรงนี้ให้ได้ก่อนครับ ถึงจะสามารถตอบต่อได้
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

10
1.ท่านสั่งให้มันจำค่าต่างๆ(รหัส,วันที่สั่ง,...)ใว้ที่ Table ไหนก็ไปเพิ่มให้มันจำสถานะปุ่มใว้ด้วยนะ
2.เมื่อเปิดฟอร์มมาก็สั่งให้ตรวจสอบแล้วสั่งให้ปุ่มมีผลตามค่านั้น
ปล.ไม่รู้ว่าท่านสั่งให้ปุ่มชื่อ DM500 มาจากไหนอ่านะครับผมจึงสั่งให้ฟอร์มเป็นตัวกำหนด
โค๊ด: [Select]
Private Sub Form_Current()
    If Me.Check_cb_no1 = True Then
        Me.cb_no1.Caption = "DM500"
        Me.cb_no1.BackColor = vbYellow
        Me.cb_no1.Enabled = True
    Else
        Me.cb_no1.Caption = "Lock"
        Me.cb_no1.BackColor = vbRed
        Me.cb_no1.Enabled = False
    End If
End Sub

Private Sub cb_no1_Click()
    If Me.cb_no1.Caption = "DM500" Then
        Me.cb_no1.Caption = "Lock"
        Me.cb_no1.BackColor = vbRed
        Me.cb_no1.Enabled = False
        Me.Check_cb_no1 = False
    End If
End Sub

Private Sub cb_no2_Click()
    Me.cb_no1.Caption = "DM500"
    Me.cb_no1.BackColor = vbYellow
    Me.cb_no1.Enabled = True
    Me.Check_cb_no1 = True
End Sub
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

11

สมมุติ
T เป็นชื่อเทเบิล
PO เป็นชื่อฟิลด์รหัสใบสั่งซื้อ
CD เป็นชื่อฟิลด์รหัสสินค้า
QTY เป็นชื่อฟิลด์จำนวนสินค้า

insert into T (PO, CD, QTY) select 127, CD, QTY from T where PO = 463
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

12
ลองทำการ compact-repair ดูก่อนว่าหายไหม

หรือลองดู แบบนี้ว่าแก้ได้ไหม



ถ้ายังไม่ได้อีก ให้ Backup File ต้นฉบับไว้ Copy มาซัก 1 อัน
เปิดไฟล์ใหม่ขึ้นมาสร้าง Module แล้วใส่ Codeนี้เข้าไป
โค๊ด: [Select]
Sub FixBadAOIndex(BadDBPath As String)
    ' <BadDBPath> is the path to the corrupt database.
    Dim dbBad As DAO.Database
    Dim tdf As DAO.TableDef
    Dim ix As DAO.Index

    Set dbBad = DBEngine.OpenDatabase(BadDBPath)
    dbBad.Execute "DELETE FROM MSysAccessObjects " & _
        "WHERE ([ID] Is Null) OR ([Data] Is Null)", _
        dbFailOnError
    Set tdf = dbBad.TableDefs("MSysAccessObjects")
    Set ix = tdf.CreateIndex("AOIndex")
    With ix
        .Fields.Append .CreateField("ID")
        .Primary = True
    End With
    tdf.Indexes.Append ix
    Set tdf = Nothing
    dbBad.Close
    Set dbBad = Nothing
End Sub

ต่อไปกด Ctrl+G แล้วใส่ FixBadAOIndex("ตำแหน่งไฟล์ที่เสียหายตั้งอยู่")
เช่น FixBadAOIndex("C:\MyPath\MyFile.mdb")
หรือส่งไฟล์เจ้าปัญหา มาทาง Inbox ผมแก้ไขให้
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

13
ผมสมมุติว่า รายการ เราใส่ในตารางแบบนี้


เราสามารถสร้างปุ่มไว้ก่อนแล้วแสดงรายการจาก combobox หลังจากกดcombobox  ประมาณนี้ครับ เช่น
สมมุติ combobox ชื่อ Combo1 เราอยากแสดงไอดีไหนบ้าง สมมุติอยากให้ แสดงรายการที่ 1 2 3  ก็กำหนด ตรง where clause เอาครับ

Private Sub Command0_Click()
Me.Combo1.SetFocus
Me.Combo1.RowSourceType = "Table/Query"
Me.Combo1.RowSource = "SELECT Table1.ID, Table1.List FROM Table1 WHERE (((Table1.ID)=1 Or (Table1.ID)=2 Or  (Table1.ID)=3));"
Me.Combo1.Dropdown
End Sub

combobox ก็จะแสดง รายการ ที่มีไอดี 1 2 3 คือ แปรงสีฟัน / สบู่ / ยาสระผม เป็นต้น
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

14
ในช่อง Criteria ให้ใส่ Like A* ครับ
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

15
ใช้คำสั่ง Like ใน Query
โพสต์นี้ได้รับคำขอบคุณจาก: Eakaluk Sansila

หน้า: [1]