แสดงกระทู้

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 ... 43 44 45 [46]
811
สมมุติ Field ที่เก็บคำนำหน้าชื่อว่า TitleName
ใช้ Replace Function
โค๊ด: [Select]
Replace([TitleName],".","")


ทีนี้ในคำนำหน้าชื่อมา . กี่อันมันลบหมดเลยคับ

812
อ้างถึง
ทุกการเปลี่ยนแปลงของเนื้อที่ว่าเปลี่ยนไปเท่าไหร่ เพาะอะไรจะสร้างตารางแบบไหนครับ


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


ตารางที่เราเก็บ ข้อมูลแปลงนา ตรง  Field ID และ ตรงจำนวนไร่ น่าจะต้องสร้างตารางเพิ่มเชื่อมความสัมพันธ์กับ ตารางใหม่ อย่างน้อยต้องมี Field ID / Area(Rai) / TimeStamp  โดย Field ID สามารถใส่ค่าซ้ำกันได้สาเหตุที่สร้างแยกออกมา เพราะในแปลงนา 1 แปลง หรือ 1 FieldID สามารถบันทึกข้อมูล จำนวนไร่ หลายๆครั้ง ตามจำนวนความเปลี่ยนแปลงของแปลงนาผืนนั้นครับ (ถ้าสร้างแบบนี้อยู่แล้วก็ไม่เป็นไรครับ)

และการแยกรายปี / รายเดือน ผมว่าสามารถดูจาก TimeStamp ได้เลยหรือไม่ เพราะเวลาเพิ่มจำนวนไร่ วันที่เวลาจะแสดงขึ้นมาอัตโนมัติ สามารถนำไปใช้ระบุปีของแปลงนาได้เลยครับ สามารถใช้ Format(TimeStamp,"YYYY") เพื่อให้แสดงเฉพาะปีครับ

ส่วนการสร้างคิวรี่ ก็ไม่ยากครับ ใช้ Group By FarmerID / FieldID / TimeStamp / และแสดงจำนวนไร่ ครับ
 

813
ห้อง MS Access / : สอบถามเรื่อง relationships
« เมื่อ: 24 ก.ค. 62 , 14:37:06 »

การรวม(Join) มีหลายแบบ แล้วแต่การนำไปใช้คับเช่น

การรวมภายใน: เฉพาะข้อมูลที่เกี่ยวข้องจากทั้งสองตารางที่รวม เช่นต้องการให้แสดงเฉพาะรายการ CustomerID ที่ตรงกันระหว่าง 2 ตาราง  ปกติน่าจะใช้แบบนี้อยู่ใช่ไหมคับ

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

ปกติเราจะกำหนด Criteria = null เพื่อดูว่า Customer รายการไหนยังไม่มีในอีกตารางหนึ่งเป็นต้นคับ


814
ลองแปลง BIGINT เป็น INT ดูครับว่าได้ไหม  แบบที่อาจารย์ pizza_p แนะนำในกระทู้ก่อนหน้านี้


หรืออาจจะเกิดจากการแสดงผล Primary Key ครับ จากโพสนี้
Notoriously bad for PKs are all floating point numeric types. They may be rounded differently on the server and in Access. If Access uses a floating point value to query a single record from the server, there will be no results because the actual value on the server is different. This is usually the cause for the #Deleted displayed in table cells.

Good data types for Primary keys are integer types (max int32) and string/varchar types (max length 255 characters).

Dates and fixed-decimal-point data types may be causing problems as well. That is mainly dependent on the actual backend database system and the used ODBC Driver. - I have no experience in that regard with DB2.

หรือใช้ Query แปลง Cint , Cstr ก่อนจัดเก็บ หรือก่อนแสดงบนฟอร์ม
ถ้าเป็น access version 2016 น่าจะแก้ใขปัญหานี้ให้แล้วครับ

รออาจารย์ท่านอื่นมาช่วยเสริมคับ  :cool: :cool:

815
ห้อง MS Access / : สอบถามเรื่องคิวรี่
« เมื่อ: 23 ก.ค. 62 , 10:06:17 »
ลองดูนะครับ ไม่รู้แบบที่ต้องการไหม

ขั้นตอนที่ 1 สร้าง Union Query ใส่
โค๊ด: [Select]
select วันที่,รหัสสินค้า,ชื่อสินค้า,จำนวน, 'ขาย' as ประเภท from ตารางขาย
Union
select วันที่,รหัสสินค้า,ชื่อสินค้า,จำนวน, 'ปรับปรุง' from ตารางปรับปรุง
Union
select วันที่,รหัสสินค้า,ชื่อสินค้า,จำนวน, 'รับเข้า' from ตารางรับเข้า;

คิวรี่แรกผมตั้งชื่อ Query ว่า Query1 นะครับ

ขั้นตอนที่ 2 สร้างคิวรี่เพิ่มอีก 1 อันใส่โค้ดนี้เข้าไปคับ แล้วรันดู
โค๊ด: [Select]
SELECT Query1.[วันที่], Query1.[รหัสสินค้า], Query1.[ชื่อสินค้า], Sum(IIf([ประเภท]="ขาย",[จำนวน])) AS [จำนวน(ขาย)], Sum(IIf([ประเภท]="รับเข้า",[จำนวน])) AS [จำนวน(รับเข้า)], Sum(IIf([ประเภท]="ปรับปรุง",[จำนวน])) AS [จำนวน(ปรับปรุง)]
FROM Query1
GROUP BY Query1.[วันที่], Query1.[รหัสสินค้า], Query1.[ชื่อสินค้า];

816
รบกวนสอบถามอาจารย์ทุกท่านคะ

     ต้องการสร้าง ComboBox ไว้สำหรับเลือกดูข้อมูล

เช่น ข้อมูลมีปี 2018 และ 2019  เราก็สร้าง  ComboBox ที่มีรายการ 2018 2019 ตามลำดับ เพื่อเลือกดูข้อมูลเฉพาะปีนั้นๆ

แต่... ที่นี้ ต้องการเพิ่ม List ใน ComboBox ว่า ทั้งหมด เพื่อทำการแสดงข้อมูลทั้งหมดทุกปีในหน้านั้นๆ

สามารถทำตามเงื่อนไขดังกล่าวนี้ได้หรือไม่คะ

รบกวนด้วยนะคะ

ขอบคุณคะ

น่าจะทำได้นะครับ เราใช้ UNION QUERY เข้ามาช่วยในการ เพิ่ม LIST "ทั้งหมด" รวมเข้ากับ LIST ปีที่เรากำหนด

ผมสมมุติตารางดังนี้
ตารางชื่อ Table1
ฟิลล์วันที่ชื่อ Dates

มีฟอร์มที่ค้นหาชื่อ frmSearch กำหนดแบบ continuous form
มีคอมโบบ๊อก ชื่อ Combo0


ขั้นตอนที่ 1 กำหนด RowSource ของ Combo0 ดังนี้
โค๊ด: [Select]
SELECT "ทั้งหมด" AS SelectYears FROM table1 AS T1   UNION SELECT format([Dates],"YYYY")  AS SelectYears FROM Table1 AS T1
ORDER BY SelectYears;

กำหนด คอลัมน์ที่ผูกไว้ = 1
จำนวนคอลัมน์ = 1


ขั้นตอนที่ 2 กำหนด Events AfterUpdate ของ Combo0
ใส่โค้ดนี้เข้าไป
โค๊ด: [Select]
Private Sub Combo0_AfterUpdate()
If Me.Combo0 = "ทั้งหมด" Then
Me.Filter = "[Dates] Like '*" & "*" & "*'"
Me.FilterOn = True
Else
Me.Filter = "[Dates] Like '*" & [Forms]![frmsearch]![Combo0] & "*'"
Me.FilterOn = True
End If
End Sub

817
แบบที่ 1
ถ้าท่านกำหนด txtGroup1A0 1 2 3 4 5 6 ....  / txtGroup1B 1 2 3 4 5 6 ...... / txtGroup2A 1 2 3 4 5 6 ... ไปแบบนี้ ใช้การกำหนดเงื่อนไขจากชื่อของตัว Control เอาก็ได้คับเช่น

โค๊ด: [Select]
Private Sub Command1_Click() 'เลือก Event ที่ต้องการครับ
    Dim ctl As Control
    For Each ctl In Me
        If ctl.ControlType = acTextBox Then
            If Left$(ctl.Name, 10) = "txtGroup1A" Then 'Left 10 เพราะต้องการเช็คตัวอักษรทางซ้าย 10 ตัวซึ่งเป็นชื่อที่เหมือนกันของกลุ่ม
                ctl.Visible = False 'หรือ ctl.Visible = true หรือจะสร้างเงื่อนไขให้กลุ่มอื่นๆด้วยก็ได้เช่นกัน
            End If
        End If
    Next ctl
End Sub

แบบที่ 2
อีกวิธีอาจจะง่ายกว่าคือการกำหนดชื่อของกลุ่มที่ Tag ของกล่องข้อความแล้วกำหนดเงือนไขการซ่อนและแสดง
ผมสมมุติ textbox 6 ตัวชื่อกลุ่ม Group1


โค๊ด: [Select]
Private Sub Command1_Click()
    Dim ctl As Control
    For Each ctl In Me
        If ctl.Tag = "Group1" Then
                ctl.Visible = False
        End If
    Next ctl

End Sub

818
ลองสร้างคิวรี่แล้ว Run SQL นี้ดูคับ
โค๊ด: [Select]
SELECT Format([วันที่],"mmm") AS เดือน
FROM Table1
ORDER BY Month([วันที่]);

819
ฟอร์มค่าใช้จ่าย(Vat) เลขอินวอย์ซ running ตามปกติ   แต่อีกฟอร์ม ค่าใช้จ่ายรวมบิล(Vat) ไม่ running ได้ใบเดียว รบกวนท่านที่เคารพ ช่วยดูหน่อยครับผิดตรงไหน

PA 2 ตัวอักษร Mid 12 Left 10
ถ้า 4 ตัวอักษร แบบ PANV Mid ต้อง 14 Left 12
แก้ไขใหม่เป็นแบบนี้ึครับ

โค๊ด: [Select]
Sub ForIsToday()
Dim strDate As String
Dim intNum As Integer, intMax As Integer
Dim strSuffix As String
strDate = "TA" & "" & (Format(Now, "yy-mm-dd"))
   If Me.voucher_e_id = "" Or IsNull(Me.voucher_e_id) Then
        If IsNull(DMax("Val(Mid([voucher_e_id],12))", "voucher_e", "Left([voucher_e_id],10) = '" & strDate & " '")) Then
            Me.voucher_e_id = strDate & "-" & "01"
            Debug.Print "1"
        Else
            intMax = DMax("Val(Mid([voucher_e_id],12))", "voucher_e", "Left([voucher_e_id],10) = '" & strDate & " '")
            intMax = intMax + 1
            Me.voucher_e_id = strDate & "-" & Format(intMax, "00")
            Debug.Print "1"
        End If
End If
End Sub

Sub ForIsOtherday()
Dim strDate As String
Dim intNum As Integer, intMax As Integer
Dim strSuffix As String
strDate = "TA" & "" & (Format(date_exp, "yy-mm-dd"))
    If Me.voucher_e_id = "" Or IsNull(Me.voucher_e_id) Then
        If IsNull(DMax("Val(Mid([voucher_e_id],12))", "voucher_e", "Left([voucher_e_id],10) = '" & strDate & " '")) Then
            Me.voucher_e_id = strDate & "-" & "01"
            Debug.Print "1"
        Else
            intMax = DMax("Val(Mid([voucher_e_id],12))", "voucher_e", "Left([voucher_e_id],10) = '" & strDate & " '")
            intMax = intMax + 1
            Me.voucher_e_id = strDate & "-" & Format(intMax, "00")
            Debug.Print "1"
        End If
End If
End Sub

820
อธิบาย ที่มาของ Field 2 3 4 ว่าคืออะไร แล้ว Field 1 คืออะไรก่อนครับ

ผมสมมุติเป็น ตารางเก็บข้อมูลการขายสินค้า
Field1 ของคุณคือ รหัสสินค้า

เมื่อกรอกรหัสสินค้าก็จะแสดง ชื่อสินค้า  / จำนวนชิ้นต่อแพ็ค / ราคา  เป็นต้น

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

ผมมีตัวอย่าง การสร้างตารางเก็บรหัสและรายละเอียด ตั้งชื่อว่า Table2
และมีฟอร์มที่สามารถนำรหัสนั้นมาระบุที่ Field1 ของฟอร์ม โดยใช้ Dlookup
ส่วน Field ที่ 3 กับ 4 ไม่แน่ใจว่าเป็นการ แยกส่วนออกมาหรือเปล่าจากตัวอย่าง MOU-SOU
แยกเป็น MOU SOU ลองดูตัวอย่างนะครับ




821
เมื่อเราใส่ข้อมูลที่ Field 1 คือ BB111 แล้ว Field 2 3 4 อ้างอิงมาจากไหนครับ พวก MOU-SOU

ที่ต้องการคือเมื่อเพิ่มข้อมูลที่ Field1 ในแถวถัดไป ให้แสดง Field 2 3 4 จากข้อมูลที่ระบุใน Record ก่อนหน้าหรือเปล่า

822
กำหนด Relation Ship ID ของ สองตารางนี้ครับ
แล้วทำการกำหนด RecordSource  โดย ดึงฟิลล์ Fuel On จาก Table2 มาด้วยคับ

823
ตัวอย่างครับ ดูที่การ BoundControl และ การกำหนดโค้ด

หน้า: 1 ... 43 44 45 [46]