แสดงกระทู้

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.


Topics - Jiw Jewel

หน้า: [1] 2
1
สวัสดีค่ะ

ปกติถ้ากดพิมพ์แล้วเส้นใน report จะหายไปไหมคะ เพราะในพรีวิวมันหาย(แค่บางเส้นเท่่านั่นค่ะ) แต่ถ้าซุมไปมากๆสัก 200% ก็จะห็นเส้นนั้นอยู่ค่ะ

2


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

3
โปรแกรทมีผู้ใช้หลายคนค่ะ แยกเอาไปวางที่เครื่อง แต่ฐานข้อมูลอยู่บน server แล้วเหตุการณ์ ไม่คาดฝันก็เกิดขึ้น เมื่อมีการเพิ่มข้อมูลใหม่ใน subform พร้อมกัน โดย error เป็นแบบนี้ค่ะ


รบกวนชีทางสว่างให้ด้วยนะคะ ขอบคุณล่วงหน้าค่ะ

4
ห้อง MS Access / Form access show record not updateable
« เมื่อ: 07 ก.ย. 64 , 15:28:49 »
อยากสอบถามค่ะ คือเราได้สร้าง form ใน access ค่ะ แล้วเอาไปวางไว้ที่ client เครื่องอื่นๆ โดย มี share Database ( เป็นไฟล์ Access )  รวมกันที่เครื่อง server โดย จะมีการต่อODBC กับเครื่อง client ด้วย แต่ทีนี้ เมื่อทำการกดเข้าไปตรงฟอร์มที่ต้องกรอกข้อมูลใหม่ มันขึ้นเป็นหน้าว่างเปล่าค่ะ ไม่ทราบว่าเพราะอะไร

ข้อสังเกต 1. เคยเป็นแบบนี้อยู่เครื่องหนึ่งค่ะ แล้วสักพักก็หายเอง แบบลงกดไปกดมามันก็หายค่ะ ก็เลยไม่คิดทำอะไรกับมัน เพราะตอนแรกคิดว่าเป้นอาการเอ๋อจากการ เชื่อมต่อ server แต่ปรากฏว่าไม่ใช่ค่ะ
            2.มีเครื่องนึงที่ลองทำไปทำมามันโหลดหน้าได้ค่ะ แต่ขึ้น error ตรง code ที่ไม่มีทาง error ได้ แล้วบอกว่า update ข้อมูลไม่ได้ค่ะ ตรงนี้เป็น code sql
            3. แต่ถ้าเป็นหน้าที่ไม่ต้องกรอกข้อมูล แดงผลได้ปกติค่ะ สามารถดึงข้อมูลได้ทั้งจาก เครื่อง server และ odbc ค่ะ

5


อธิบายสถานการณ์นะคะ คือว่าตามภาพที่เห็นมันเกิดอาการภาษาเพี้ยนขึ้นค่ะ ซึ่งตอนทำในเครื่องตัวเอง ไม่พบปัญหาอะไรค่ะ
แต่พอเอาไปเทสในโหมด Runtime ของเครื่องอื่นมันเกิดอาการแบบนี้ขึ้นค่ะ ซึ่งได้ลองหาวิธีในเน็ตแล้วค่ะ ซึ่งได้ลองทำตามนี้ไปค่ะ

https://km.phuket.psu.ac.th/archives/2617 link

แต่ผลที่ได้ก็คือเหมือนเดิมค่ะ ไม่สามารถแก้ไขได้

6
ห้อง MS Access / สอบถามเกี่ยวกับ Access Runtime
« เมื่อ: 04 ส.ค. 64 , 17:53:57 »
พบปัญหาจากการใช้โหมดRuntimeค่ะ เนื่องจากว่าทำโปรแกรมแล้วเอาไปใช้กับเครื่องอื่นแล้วติดปัญหาค่ะ รบกวนผู้รู้แนะแนวทางทีนะคะ อาการเป็นดังนี้ค่ะ

1.โปรแกรมนี้ต่อเข้ากับ ODBC ที่เป็นฐานข้อมูลด้วย และมีการใช้ ฐานข้อมูลในAccess ร่วมกันผ่านการ Map drive ค่ะ
2.เมื่อลองนำไปใช้กับโหมด runtime ในเครื่องอื่น แล้วพบว่า form ที่มีการดึงข้อมูลจาก ODBC มาแสดงขึ้นเป็น form เปล่าๆ แต่ถ้าform ไหนไม่ต่อ ODBC ยังทำงานได้ปกติค่ะ
3. version Access ที่ใช้พัฒนาโปรแกรมคือ office 365 ส่วน version runtime ก็เป็น version 365 เช่นเดียวกันค่ะ

รบกวนชี้แนะทีนะคะ

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

8
สวัสดีค่ะ เรากำลังทำการบันทึกข้อมุลโดยมีโครงสร้างโปรแกรม คือ มีฟอร์มย่อย 1 ฟอร์มในฟอร์มหลักค่ะ
ตัวอย่างโปรแกรมนะคะ



ต่อไปเป็นโค้ดที่ใช้นะคะ

Option Compare Database
Option Explicit
Dim Prefix As String
Dim vLast As Variant
Dim iNext As Integer
Dim msg As Integer
Dim Saved As Boolean
Dim runNo As Variant
Dim tradeID As String
Dim doc_id As String

Private Sub C_cancelF_Click()
        DoCmd.OpenForm "Home", acNormal, "", "", , acNormal
        DoCmd.Close acForm, "form_proRequest"
End Sub


ส่วนนี้ไม่มีอะไรค่ะ แค่โค้ดกำหนดค่าตัวเลขเอกสารเฉยๆค่ะ
Private Sub DistChannel_AfterUpdate()
    If Not IsNull(Me.DistChannel.Value) Then
        Prefix = Me.DistChannel.Value
        'find max value of runing_NO in table ProRequest
        vLast = DMax("[runing_NO]", "[ProRequest]", "[runing_NO] LIKE '" & Format([proReq_date], "yy\*\'"))
        If IsNull(vLast) Then
            iNext = 1
        Else
            vLast = Val(Right(vLast, 3))
            vLast = vLast + 1
            iNext = vLast
        End If
        runNo = Format([proReq_date], "yy") & Format(iNext, "000")
        Me.run_Number = runNo
        Me.proReq_ID = Prefix & Me.run_Number
        'set button enable
        Me.next_btn.Enabled = True
        Me.save_btn.Enabled = True
    Else
        Me.run_Number = ""
        Me.proReq_ID = ""
        'set button enable disable
        Me.next_btn.Enabled = False
        Me.save_btn.Enabled = False
    End If

End Sub


ส่วนตรงนี้เป็น Table ของ sub form ค่ะ Form ค่ะ
Private Sub Form_Current()
'Set Me.sub_proRequrest_Detail.Form.Recordset = CurrentDb.OpenRecordset("SELECT * FROM [proRequest Detail] WHERE proReq_ID = '" & Me.proReq_ID & "'", dbOpenDynaset, dbAppendOnly)
End Sub

Private Sub Form_Dirty(Cancel As Integer)
    If Me.Dirty = False Then
        DBEngine.BeginTrans
    End If
End Sub

ส่วนตรงนี้เป็น Table ของ Main Form ค่ะ
Private Sub Form_Open(Cancel As Integer)
Set Me.Recordset = CurrentDb.OpenRecordset("SELECT * FROM ProRequest", dbOpenDynaset, dbAppendOnly)
End Sub


ปุ่มกด save ซึ่งสามารถทำงานได้ แต่เมื่อกดเพิ่มข้อมูลในsubform แล้ว ไม่สามรถบันทึกได้ค่ะ เพิ่งแต่ที่ตรงนี้เยอะเพระต้องการบังคับใส่ข้อมูลเฉยๆค่ะ
Private Sub next_btn_Click()
On Error GoTo Save_Error
        If IsNull(Me.DistChannel) Then
        MsgBox "กรุณาเลือกช่องทางการขาย (1)", vbCritical
        Me.DistChannel.SetFocus
        Exit Sub
    End If
    If IsNull(Me.forecast_dist) Then
        MsgBox "กรุณาเลือกช่องทางการขาย (2)", vbCritical
        Me.forecast_dist.SetFocus
        Exit Sub
    End If
    If IsNull(Me.Empp_ID) Then
        MsgBox "กรุณาเลือกพนักงานขาย", vbCritical
        Me.Empp_ID.SetFocus
        Exit Sub
    End If
    If IsNull(Me.proReq_name) Then
        MsgBox "กรุณาใส่ชื่อกิจกกรม", vbCritical
        Me.proReq_name.SetFocus
        Exit Sub
    End If
    If IsNull(Me.proReq_start_date) Then
        MsgBox "กรุณากรอกวันที่เริ่มโปรโมชั่น", vbCritical
        Me.proReq_start_date.SetFocus
        Exit Sub
    End If
    If IsNull(Me.proReq_end_date) Then
        MsgBox "กรุณากรอกวันที่สิ้นสุดโปรโมชั่น", vbCritical
        Me.proReq_end_date.SetFocus
        Exit Sub
    End If
    If IsNull(Me.proReq_date_sum) Then
        MsgBox "กรุณากรอกวันที่สรุปรายการกับฝ่ายขาย", vbCritical
        Me.proReq_date_sum.SetFocus
        Exit Sub
    End If
    If IsNull(Me.proReq_date_confirm) Then
        MsgBox "กรุณากรอกวันที่ฝ่ายขายยืนยันรายการ", vbCritical
        Me.proReq_date_confirm.SetFocus
        Exit Sub
    End If
    If (Me.C_discoubt = False) And (Me.C_exchange = False) And (Me.C_getfree = False) And (Me.C_set = False) And (Me.C_spacial = False) And (Me.C_other = False) Then
        MsgBox "กรุณาเลือกประเภทกิจกรรม", vbCritical
        Exit Sub
    End If

    If IsNull(Me.FrontMargin) Then
        MsgBox "กรุณากรอก Front margin/ส่วนลด", vbCritical
        Me.FrontMargin.SetFocus
        Exit Sub
    End If
    Me.Status_ID = 81
   CurrentDb.Execute "INSERT INTO proAssess (proAssess_ID, Sale_EMP_ID) VALUES ('" & Me.proReq_ID & "' , '" & Me.Empp_ID & "')"
    DBEngine.CommitTrans
    doc_id = Me.proReq_ID
    DoCmd.GoToRecord , , acNewRec
    DoCmd.OpenForm "Efrm_proAssess", acNormal, , "[proAssess_ID]='" & doc_id & "'"
    DoCmd.Close acForm, "form_proRequest"
    Exit Sub
   
Save_Error:
DBEngine.Rollback
MsgBox "error จ้าาาา", vbOKOnly
End Sub


ตรงนี้เป็น โค้ดสำหรับการใส่ข้อมูลในเอกสารเฉยๆค่ะ
Private Sub proReq_date_confirm_BeforeUpdate(Cancel As Integer)
minimum_date = DateAdd("m", -2, Me.proReq_start_date)
    If (Me.proReq_date_confirm >= minimum_date) Then
        MsgBox "วันที่ไม่ถูกต้อง", vbCritical
        Cancel = True
    End If
End Sub
Private Sub proReq_date_sum_BeforeUpdate(Cancel As Integer)
    If Me.proReq_date_sum <= Me.proReq_date Then
        MsgBox "วันที่ไม่ถูกต้อง", vbCritical
        Cancel = True
    End If
End Sub

Private Sub proReq_end_date_BeforeUpdate(Cancel As Integer)
    If (Me.proReq_end_date < Me.proReq_start_date) Then
        MsgBox "วันที่ไม่ถูกต้อง", vbCritical
        Cancel = True
        Me.proReq_end_date.Undo
    End If
End Sub


ตรงนี้เป็น โค้ดสำหรับการใส่ข้อมูลในเอกสารเฉยๆค่ะ
Private Sub proReq_start_date_AfterUpdate()
    Me.proReq_date_confirm = DateAdd("m", -2, Me.proReq_start_date)
End Sub

ปุ่มกด save ซึ่งสามารถทำงานได้ แต่เมื่อกดเพิ่มข้อมูลในsubform แล้ว ไม่สามรถบันทึกได้ค่ะ
Private Sub save_btn_Click()
On Error GoTo Save_Error
    If IsNull(Me.DistChannel) Then
        MsgBox "กรุณาเลือกช่องทางการขาย (1)", vbCritical
        Me.DistChannel.SetFocus
        Exit Sub
    End If
    If IsNull(Me.proReq_start_date) Then
        MsgBox "กรุณากรอกวันที่เริ่มโปรโมชั่น", vbCritical
        Me.proReq_start_date.SetFocus
        Exit Sub
    End If
    If IsNull(Me.proReq_end_date) Then
        MsgBox "กรุณากรอกวันที่สิ้นสุดโปรโมชั่น", vbCritical
        Me.proReq_end_date.SetFocus
        Exit Sub
    End If
    Me.Status_ID = 81
    DBEngine.CommitTrans
    Saved = True
    MsgBox "บันทึกแล้ว", vbOKOnly
    Exit Sub
   
Save_Error:
DBEngine.Rollback
Saved = False
MsgBox "error จ้าาาา", vbOKOnly
End Sub


สิ่งเราต้องการคือการกด save แล้วมันบันทึกตารางค่ะ แต่ทำไม่ได้ค่ะ ช่วนด้วยนะคะ งมมา 3 วันแล้วค่ะ
ส่วนด้านล่างเป็น ref ที่ดูมาเป็นไกด์ค่ะ
https://codekabinett.com/rdumps.php?Lang=2&targetDoc=how-to-access-transaction link

9
ห้อง MS Access / transection table สอบถามค่ะ
« เมื่อ: 11 มี.ค. 64 , 09:32:05 »
คือเรากำลังเก็บข้อมูลอยู่ค่ะเป็นข้อมูลใบเนสอราคาสินค้า ซึ่ง ตอนนี้ มี 2 table(อย่างคร่าวๆ นะคะ ) คือ
1. order จะเก็บ 1.เลขที่เอกสาร 2.วันที่
2. order detail  จะเก็บ 1.ID 2.เลขที่เอกสาร 3.รหัสสินค้า 4.ราคาที่เสนอ

ทีนี้ประเด็นคือ ราคาที่เสนอน่ะค่ะ อาจมีการมาแก้ไขได้ ทีนี้เลยอยากเก็บข้อมูลค่ะว่า ราคาก่อนหน้านี้คืออะไร แล้วเปลี่ยนเป็นอะไรน่ะค่ะ (tracking การแก้ไขข้อมูล) ทีนี้อย่าได้แนวคิดค่ะว่าจะทำยังไงต่อ ควรสร้างtable ออกมายังไงคะ หลักการคิดคืออะไร

10
ห้อง MS Access / สอบถาม error flow error 6
« เมื่อ: 05 ก.พ. 64 , 17:40:09 »
รบกวนสอบถามหน่อยค่ะ
 
โปรแกรมขึ้น   error flow error 6 แต่พอ debug error แล้ว error ไม่แสดงค่ะ ก็คือผลลัพธ์ตามที่ต้องการต้องค่ะ แตพอเวลา run เองโดยไม่มีเบรกพ้อย์ ขั้น error ค่ะ
ปล.อันนี้เป็ฟอร์ม ที่อยู่ในsub form อีกทีค่ะ ซึ่งตัวที่มีปัญหาคือ textbox ที่คำนวณค่า sum จากตารางใน continuous ฟอร์มอิกทีค่ะ

11
โปรแกรมแจ้งเตือนว่า error 13 'type mismatch'

code ตัวอย่าง

    CurrentDb.Execute "UPDATE [proAssess Detail] SET [proAssess Detail].backmargin_sum_percent = " & aaa & "  WHERE ((([proAssess Detail].proRequest_ID)='" & Me.proRequest_ID & "'))"

ซึ่งตรง aaa ค่ะ คือค่าที่รับมาจากการคำนวณในform ซึ่งมาจากการหารแล้วทำเป็นเปอร์เซ็นต์ค่ะ มีจุดทศนิยมเป็น 10 ตัวเลยทีเดียวค่ะ

ทีนี้อยากสอบถามว่าที่เกิดerror ขึ้นเป็นเพราะทศนิยมเยอะเกินไปหรือเพราะกำหนดอะไรปิดกันแน่
ก่อนหน้านี้ ลองแปลงformat ดูค่ะ แต่ตัวเลขที่แปลงมามี "" ติดอยู่ด้วย จึงคิดว่าที่error เพราะเช่นนี้หรือเปล่า และขอให้ช่วยแนะนำการตัดทศนิยมด้วยนะคะ ขอบคุณล่วงหน้าค่ะ

12
ห้อง MS Access / set style ใน excel ผ่าน access vba
« เมื่อ: 14 ธ.ค. 63 , 10:41:41 »
รบกสรสอบถามค่ะ คือพอดีว่าจะเปลี่ยนสีตรง conditional formatting ใน cell ตามเงื่อนไขให้เป็น  style Bad ค่ะ แต่ไม่ทราบcode ว่าทำอย่างไรหาในเน็ตแล้วไม่เกิดผลเลยค่ะ

ปล.ลองเทียบสีปกติแล้วเพี้ยนค่ะ ซึ่งไม่ทราบว่าเพราะอะไรค่ะ

13
เราทำโปรแกรมค่ะ แล้วความจริงตัวโปรแกรมจะต้องกรอกข้อมูลลงทีละบรรทัดค่ะ (กรอกรหัสสินค้าแล้วข้อมูลอื่นๆที่จำเป็นจะเด้งขึ้นมาค่ะ) แต่เนื่องจากว่า ข้อมูลที่ต้องกรอกบางครั้งมีมากถึง 100 กว่ารายการค่ะ เราเลยอยากทราบว่ามันสามารถดึงเอาข้อมูลไปลงในฟอร์มบางส่วน อย่างน้อยก็รหัสสินค้า สามาถทำได้ไหมคะ รบกวนผู้รู้บอกทางสว่างให้ทีค่ะ

ส่วนข้างล่างเป็นตัวอย่างหน้าจอค่ะ


14
คืออยากให้query แสดงข้อมูลตามนี้ค่ะ
ถ้าเรามี table 1 และ table 2 ตามนี้
Table1
Id|Name |age
1 | Hill    | 3
2 | Golf   |
3 | Soya  | 5

Table2

Id|Name|age
1 | Hill   | 5
2 | Golf  | 4
3 | Soya |
4 | Jin    | 9


Query Results

Id|Name|age
1 | Hill   |5
2 | Golf  |4
3 | Soya |5

ต้องทำอย่างไรคะ ทางนี้ลอง Left Join แล้ว Union ค่าที่ออกมาซ้ำเป็น2 แถวค่ะเช่น

Id|Name|age
1 | Hill   |3
1 | Hill   |5
2 | Golf  |
2 | Golf  |4
3 | Soya |5
3 | Soya |


รบกวนผู้รู้ช่วยทีนะคะ

15
ทำโปรแกรมหาค่ามาแทนโดยการใช้ loop ค่ะ ซึ่งพอดรากดปุ่มใน main form โปรแกรมจะเริ่มมทำงานค่ะ     ตารางเป็น subform อยู่อีกทีค่ะ ไม่ทราบว่าเราทำผิดหลักอะไรไปหรือเปล่าคะ  ส่วนด้านส่างคือcodeค่ะ

Private Sub update_data_Click()
'เป็นตัวแปลเก็บ ID เอกสารค่ะ (primary key)
fff = Me.proAssess_ID

'เงื่อนไขให้เข้าทำหรือไม่ทำการวนลูปค่ะ
If Not IsNull(Me.Esub_proAssess_Details) Then
Me![Esub proAssess Details].SetFocus

'เงื่อนไขการออกจากลูปค่ะ
Do Until IsNull(Me.Esub_proAssess_Details!Product_ID)
p_id = Me.Esub_proAssess_Details!Product_ID

'คำสังให้หาค่าจากในoracle ลงมาแทนค่าในตารางค่ะ
p_cost = DLookup("ITEM_COST", "[PRICE WITH PRO NORMAL]", "SKU_ID ='" & p_id & "'")
Detail].proRequest_ID)='" & fff & "') AND (([proAssess Detail].Product_ID)='" & p_id & "'));"
Me.Esub_proAssess_Details![Ex-vat] = DLookup("OPERAND", "[PRICE WITH PRO NORMAL]", "SKU_ID ='" & p_id & "'")
Me.Esub_proAssess_Details![In-vat] = DLookup("IN_VAT", "[PRICE WITH PRO NORMAL]", "SKU_ID ='" & p_id & "'")
Me.Esub_proAssess_Details![Pro_normal] = DLookup("REV_IN_VAT", "[PRICE WITH PRO NORMAL]", "SKU_ID ='" & p_id & "'")
DoCmd.GoToRecord , , acNext
Loop
End If
End Sub


ปล.รบกวนด้วยนะคะ

16
คือว่าสิ่งที่ทำตอนนี้คือ การดึงข้อมูลจากในฐานข้อมูลอื่นมาคำนวณ แล้วบันทึกข้อมูลลงในตารางของเครื่องเราค่ะ

แต่ทีนี้

มันจะมีบางกรณีที่ทำค้างไว้แล้วบันทึกไปก่อน อีกวันก็มาทำต่อ แต่ข้อมูลนั้นคือไม่อัปเดตค่ะ

เช่น เมื่อวานสินค้า AA ราคาขาย 30 บาท
แต่ พอมาวันนี้ข้อมูลมีการอัปเดต สินค้า AA ราคาขาย 40 แต่เมื่อเปิดขึึ่นมาทำต่อ สินค้าAA ก็ยังมีราคาขายอันเดิม จะมีวิธีไหนทำให้ข้อมูลมีการการอัปเดตบ้างคะ โดยที่จะอัปเดตเฉพาะสินค้าที่มีสถานะกำลังทำเนินการ

หน้า: [1] 2