แสดงกระทู้

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
ขอบคุณทุกท่านครับ

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

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

คือฟังก์ชั่นในการบันทึกเลข 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



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

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

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

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

4

มีเรื่องรบกวนครับ
อยากให้ช่วยแนะนำการเขียน 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 ..

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

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


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

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

6
ใช่ครับ

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

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

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

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

ขอบคุณครับ

7



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

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

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

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

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

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

error 3146
ODBC--call failed


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

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

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

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

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

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

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

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

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

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

13


Access + Mysql ODBC

error ค่อนข้างแปลก คือใส่ ip นึง แต่ error แจ้ง ip นึง
- ชื่อ domain และ ip ถูกต้องแน่นอน เครื่องอื่นเชื่อมต่อได้หมด เป็นแค่เครื่องนี้เครื่องเดียว
- ชื่อ user ก็ถูกต้องครับ

ในหน้าต่าง odbc
tcp/ip server : ผมลองใส่ทั้ง domain และ ip แต่เวลา error ดันแจ้งเป็น ip ซึ่ง ip นี้เป็น public ip ของเน็ตผมเองครับ
เหมือนกับมันไม่ได้เชื่อมต่อไปที่ ip server ที่เราใส่ แต่เชื่อมต่อไปที่ public ip เลยทำให้หาไม่เจอ มันเป็นเพราะอะไรครับ




14
ลืมแจ้งเพิ่มเติม ตอนกดปุ่ม save ลองจับ error ดู มันฟ้อง
error 3021 No current record.


ตอนนี้แก้ปัญหาได้แล้วครับ
ตอบไว้เผื่อใครเจอปัญหาเดียวกันครับ

--------------------------------------
ผมทดลองโคลนตาราง customer จากเดิมชนิดข้อมูล ที่เก็บค่า จริงเท็จ
case1 > customer_test1 ใช้เป็นค่าเดิมคือ bit(1) ใน Access แสดงชนิดข้อมูลเป็น Yes/No
case2 > customer_test2 แก้ไขจาก bit(1) เป็น tinyint(1) ใน Access แสดงชนิดข้อมูลเป็น Number(integer)
case3 > customer_test3 ลบฟิลด์ข้อมูล bit(1) ทิ้งทั้งหมด
case4 > customer_test3 สร้างฟิลด์ ชนิดข้อมูล bit(1) เหมือน case 1

ทดลองเปิดด้วยฟอร์มเดิม เปลี่ยนแค่ Record Source

case1 > แก้ไขข้อมูลไม่ได้ แจ้ง write conflict เหมือนเดิม
case2 > แก้ไขข้อมูลได้ปกติอย่างที่ต้องการ  (mySQL เก็บค่า True = -1 / False = 0)
case3 > แก้ไขข้อมูลได้ปกติอย่างที่ต้องการ 
case4 > แก้ไขข้อมูลได้ปกติอย่างที่ต้องการ  (mySQL เก็บค่า True = 1 / False = 0)

แต่มีตาราง Product ที่แม้ว่าค่าเดิมจะเป็น bit(1) ก็สามารถใช้งานได้ปกติ

ดูไปดูมา ปรากฎว่า ฟิลด์ที่จะเก็บค่าจริงเท็จ มีเป็นค่า NULL d

- สรุป -
เป็นเพราะฟิลด์ที่เป็น bit(1) มีค่า NULL
ใน case 4 ที่ลบ ฟิลด์ข้อมูล bit(1) ทิ้งแล้วสร้างใหม่ เป็น bit(1) เหมือนเดิม แต่ใช้งานได้ เพราะเมื่อสร้างใหม่ ค่าเริ่มต้นถูกกำหนดให้เป็น 0 ทั้งหมด ไม่มีฟิลด์ใดว่าง
ใน case 2 แม้มีค่าว่าง แค่ใช้งานได้ปกติ เดาว่า เพราะ tinyint(1) อนุญาตให้มีค่าว่างได้


แต่สุดท้ายผมจะเปลี่ยนฟิลด์ bit(1) เป็น tinyint(1) ทั้งหมด

ขอบคุณครับ

--------------------------------------

15
ก่อนอื่น
ผมใช้ access + mysql (ฐานข้อมูลอยู่บน www)
โดยฐานข้อมูลนี้ export มาจาก sql server โดยไม่มี error ใด ๆ ครับ กำหนด pk เรียบร้อยหมดแล้ว

อาการ
- การดึงข้อมูลมาแสดงทำได้ปกติ
- ข้อมูลที่เพิ่มใหม่ เพิ่มได้ แต่แก้ไขไม่ได้ ฟ้อง write conflict
- แต่ข้อมูลเก่า แก้ไขได้ปกติ




ไม่ทราบว่ามีแนวทางการแก้ปัญหาแนะนำมั้ยครับ
ขอบคุณครับ

16
ขออนุญาติถามต่อยอดครับ วิธีแบบในคลิปสามารถใช้ NAS เป็นเซิฟเวอร์ได้ไหมครับ

เป็นไปได้แต่ไม่แนะนำครับ
nas หน้าที่หลักจัดการไฟล์
มันไม่ได้ออกแบบมาให้ทำงานในรูปแบบของ server สเปคก็ไม่แรงพอ

ถ้าจะแชร์ไฟล์และใช้ฐานข้อมูล sql ด้วย ใช้เป็น server ไปเลยดีกว่าครับ

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