แสดงกระทู้

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 - Kxess

หน้า: [1] 2 3 4 5
1
ลองไปดูในไฟล์ front-end ที่แยกมาครับว่า ลิ้งไปที่ไหน

โดยคลิกที่ External data > Linked table manager



จากนั้นจะแสดงหน้าต่างด้านล่าง



ให้ดูว่าที่อยู่ของไฟล์  back-end ตารางฐานข้อมูลอยู่ที่ไหน ก็ให้เอาไฟล์ไปวางไว้ตรงนั้น ในเครื่องใหม่
เช่น D:\database\back-end.accdb ที่เครื่องใหม่ ก็ต้องเอามาไว้ตรงนี้เหมือนกัน

--------
หรืออีกวิธีก็คือ สร้างลิ้งใหม่เลย โดยการลบตารางเก่าออก (*ต้องเป็นตารางที่ link table มานะ โดยมันจะมีลูกศรชี้ไปทางขวาเล็ก ๆ ที่รูปตารางแบบนี้ ) ถ้าลบตารางปกติ ข้อมูลหาย !!!


เมื่อลบแล้วให้ไปที่ External Data > New Data Source > From File > Access (กณีที่เราใช้จากไฟล์ access)



เลือกที่อยู่ของไฟล์ฐานข้อมูล back-end แล้วเลือกตัวเลือกด้านล่าง (Link to the database ...)



จะแสดงหน้าต่างให้เลือกตารางที่ต้องการ คลิกเลือก หรือเลือกทั้งหมดก็แล้วแต่ จากนั้นกด ok เป็นอันเรียบร้อย

2
บันทึก เปิดใหม่ ใช้ไม่ได้แล้วครับ
แต่ถ้าเปิดใหม่มาแล้วสร้าง combo box ใหม่ จะใช้ได้ครับ ทำวนไป

แต่สังเกตว่าเวลาเราพิมพ์ข้อความลงไปแม้ว่าจะพิมพ์ถูกต้องครบทุกตัวอักษร แต่มันก็แจ้งว่าข้อความที่พิมพ์ไม่ตรงถูก ต้องเลือกเท่านั้น
งงจริงครับ -..-




3
สาเหตุ ไม่ทราบจริง ๆ

ผมลองโหลดไฟล์มาดู และลองพิมพ์ดูมันก็ไม่ขึ้นเหมือนที่ จขกท เป็นครับ
ผมเลยสร้างฟอร์มใหม่ และสร้างคอมโบบ๊อกใหม่ โดยใช้ row source เดิม ปรากฎว่าดูได้ครับ และส่งผลให้ฟอร์มหลัก manCustomer ดูได้ไปด้วยทั้งหมด

งงสิครับ 555

รอท่านอื่นครับ ผมอยากรู้เหมือนกัน



หลังจากสร้างฟอร์มแล้วก็มาดูที่ฟอร์มหลัก ใช้ได้เฉย แต่พอผมบักทึกแล้วปิด เปิดมาใหม่ ก็จะใช้ไม่ได้ครับ







4
ชนิดของข้อมูลเป็น short text รึป่าวครับ

ถ้าเป็นชนิดอื่นที่ยาว ๆ มันจะใช้ไม่ได้

5
จริงด้วยครับ
ลองไปใช้ดู เพิ่มข้อมูลได้ถูกต้อง เรียบร้อยครับ
ปกติไม่ค่อยใช้ความสามารถนี้เลย เขียนแต่ query ตลอด 555
ขอบคุณมากครับ


6



ผมมี 2 ตารางที่มันไม่ลิ้งกันด้วย ID คราวนี้ผมจะทำให้มันลิ้งกัน

คอลัมน์ที่เหมือนกันคือ Product_Name กับ POD_Note

ผมต้องการเอา Product_ID ไปใส่ใน POD_Product_ID

สามารถทำอย่างไรได้บ้างครับ เขียนเป็นคิวรี่ก็ได้ครับ

ขอบคุณครับ





7
ขอบคุณทุกท่านครับ

ตอนนี้ผมแก้จนได้ผลตามที่ต้องการแล้วครับ

บางทีก็อธิบายคำถามหรือสิ่งที่ต้องการยากครับ ฮ่าๆ

คือฟังก์ชั่นในการบันทึกเลข Serial ลงในรายการของบิลครับ โดยข้อมูลใน OrderDetail เมื่อเปิดบิลก็จะเพิ่มข้อมูลใน BillDetail จากนั้นจะมีการใส่เลข Serial ลงไปในรายการของบิลด้วยครับ

โค๊ด: [Select]

Private Sub InsertSerialtoBillDetail(CurrentOrderID As Long, NewBill_ID As String)

Set rsOrder_Details = CurrentDb.OpenRecordset("SELECT * FROM Order_Details WHERE Order_ID = " & CurrentOrderID, dbOpenSnapshot)
Set rsBill_Details = CurrentDb.OpenRecordset("Bill_Details", dbOpenDynaset, dbAppendOnly)
   
 
    Do While rsOrder_Details.EOF = False
        With rsBill_Details
                .AddNew
                For Each fld In rsOrder_Details.Fields
                        Select Case fld.Name
                                Case "Order_ID"
                                    rsBill_Details("Bill_ID").Value = NewBill_ID
               
                                Case "Product_ID"
                                    rsBill_Details("Product_ID").Value = fld.Value
                                    ProID = fld.Value
                                    getPSerial = Nz(DLookup("P_RunSerial", "Products", "Product_ID=" & ProID), "")

                                Case "OD_Quantity"
                                    rsBill_Details("BD_Quantity").Value = fld.Value
                                    PQuantity = fld.Value
           
                                Case "OD_Unit_Price"
                                    rsBill_Details("BD_Unit_Price").Value = fld.Value

                                'BD_Serials
                                Case Else
                                   
                                 'เรียกฟังก์ชั่นในการรันซีเรียล
                                 txtLastSerial = RunSerialTube(getPSerial, PQuantity)
                                 CurrentDb.Execute "UPDATE Products SET P_RunSerial ='" & txtLastSerial & "' WHERE [Product_ID]= " & ProID, dbSeeChanges

                        End Select
                        Next
                    .Update
            End With
            rsOrder_Details.MoveNext
    Loop

   rsOrder_Details.Close
   rsBill_Details.Close
  Set rsBill_Details = Nothing
  Set rsOrder_Details = Nothing



มีผิดแปลกตรงไหนแนะนำได้ครับ
ขอบคุณครับ

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

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

9
ทำได้แล้วครับ : D

10

มีเรื่องรบกวนครับ
อยากให้ช่วยแนะนำการเขียน vba โดยใช้ DAO ครับ
การทำงานคือ ผมจะทำการก๊อปปี้ข้อมูลใน OrderDetail ไปยัง BillDetail

เดิมที่ผมใช้คำสั่ง CurrentDb.Execute "INSERT INTO BillDetail(B2,B3,B4) SELECT (O2,O3,O4) FROM OrderDetail WHERE Order_ID=" & CurrentID
ใช้งานได้ปกติไม่มีปัญหาอะไรครับ

แต่ตอนนี้ผมต้องการเพิ่มข้อมูลเลข Serial ลงใน BillDetail ซึ่งแตกต่างกันในแต่ละระเบียน

ผมเลยต้องใช้ DAO ผมขอเขียนคร่าว ๆ แบบไม่ถูก syntax


rsBill(B1) = "เลขที่ที่กำหนดขึ้นใหม่"
rsBill(B2) = rsOrder(O2)
rsBill(B3) = rsOrder(O3)
rsBill(B4) = rsOrder(O4)
rsBill(B5) = "เลขซีเรี่ยลที่กำหนดขึ้น"
Next ..

ผมจะเขียนเป็นโปรแกรมได้ยังไงครับ
ขอบคุณครับ

สวัสดีวันปีใหม่จีน
ขอให้มีความสุข เฮ็ง ๆ รวย ๆ สุขภาพแข็งแรงกันถ้วนหน้า


11
ใช้งานได้ครับอย่างดีครับ ขอบคุณมากครับ

ตอนแรก error ติดอยู่นาน ที่ไหนได้ ประเภทข้อมูลไม่ตรงกัน อีกอัน short text อีกกัน memo

12
ใช่ครับ

ตาราง rejected_email คือเมลที่ตีกลับ

เอามาเทียบกับ email ในตาราง personal

แล้วลบข้อมูลในช่อง email ในตาราง personal

ตัวอย่างในภาพ ผมอาจจะใช้คิวรี่ผิด คือผม join ด้วย email แต่มันก็จะลบ email ไม่ได้

ขอบคุณครับ

13



ผมมี 2 ตาราง
1. ตารางรายชื่อลูกค้าและ email
2. ตาราง email ที่ถูกตีกลับ

ผมอยากจะลบ email ของลูกค้าที่ตีกลับ ลบเฉพาะข้อมูล email ไม่ลบระเบียนครับ
ผมควรจะเขียนคิวรี่อย่างไรดีครับ
ขอบคุณครับ

14
ผมลองมาหลายวิธีแล้ว ทั้งเก็บในคลาวด์ต่าง ๆ ทั้ง sql server / google sql / mysql
วิธีเอาไว้ในพื้นที่คลาวด์ไม่แนะนำเพราะช้า ยิ่งฐานข้อมูลใหญ่ขึ้น ยิ่งช้า เสี่ยงเกิดข้อผิดพลาดของข้อมูล

แนะนำแบบเม้นบนครับ
ถ้าใช้แบบออฟไลน์ วางไว้ที่เครื่องเซิฟเวอร์แล้วใช้งานแบบแชร์ไฟล์

ถ้าใช้แบบออนไลน์สำหรับ work from home ผมใช้ odbc+mysql ฐานข้อมูลบนเว็บไซต์ วิธีนี้ทำงานเร็วใกล้เคียงกับแบบออฟไลน์
ข้อแนะนำ
- เลือกโฮสดี ๆ ถ้าล่มบ่อยก็จะมีปัญหา
- ต้องปรับปรุงโค้ดนิดหน่อย

15
ไม่ได้เหมือนเดิมครับ

error 3146
ODBC--call failed


แต่ใช้เป็นแบบเต็ม ๆ แทนใช้ได้ครับ ขอบคุณครับ

INSERT INTO table1 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

16
ผมจะทำการคัดลอกข้อมูลลูกค้าทั้งหมดครับ

คำสั่ง
CurrentDb.Execute "INSERT INTO Customers SELECT * FROM Customers WHERE Customer_ID = " & FromCustomerID & ";"

แต่มันไม่ทำงาน ไม่แน่ใจว่าต้องใช้คำสั่งไหนครับ รบกวนด้วยครับ

ปล. จำเป็นต้อง vba

17
split database เอา front-end ไว้ที่เครื่องครู เอา back-end ไว้ที่เครื่องหลักซักที่
เชื่อมต่อกันด้วย wifi ก็ใช้งานได้ครับ แต่อาจจะมีหน่วง ๆ นะครับ
ผมไม่รู้ว่าถ้าใช้งานจริง ๆ ห่างกันระดับอาคาร จะให้งานได้ดีแค่ไหน หน่วง หรือค้างหรือป่าว
เพราะที่ผมเคยใช้งาน คือห่างกันแค่ในบริเวรห้องเท่านั้น

อีกวิธีก็คือใช้ back-end เป็น mysql ส่วน front-end ก็ใช้ access ตามปกติ แล้วเข้าถึงฐานข้อมูลผ่าน internet ซึ่งผมใช้วิธีนี้อยู่ ใช้งานได้ดี เร็วมาก ไม่มีปัญหาอะไรครับ ถ้าเน็ตไม่มีปัญหา

18
มาช้าไป เล่าให้ฟังแล้วกันนะครับ
ผมเพิ่งย้ายจาก ms access ไปใช้ sql server ใช้อยู่ซักพัก แล้วเปลี่ยนไปใช้ mysql เมื่อไม่นานมานี้ เพราะ online สะดวกกว่า ผมพบว่า sql server ค่อนข้างหนัก และช้า ขนาดผ่าน lan ยังช้ากว่า mysql ที่ออนไลน์

จากที่ได้ลองใช้ sql server อยู่ซักพัก
ต้องระวังคือ ทุกตารางต้องมี pk หลังจากการ export ไป sqlserver pk จะหาย
ชนิดข้อมูลก็จะถูกแปลง ซึ่งบางชนิดมันไม่ตรงกับที่เราต้องการ ต้องตรวจสอบและเปลี่ยนใหม่ เช่นพวก autonumber / yesno / currency
- join ต้องเป็นชนิดข้อมูลเดียวกัน ตัวเลขก็ต้องตัวเลข (ควรใช้เป็นตัวเลข เป็น text ไม่แนะนำ)
- type mismatch ส่วนใหญ่คือ ชนิดข้อมูลไม่ตรงกัน
- การดึงข้อมูลมาแสดง ต้องดึง pk มาด้วยเสมอ

หน้า: [1] 2 3 4 5