กระทู้เก่าบอร์ด อ.Yeadram
1,080 4
URL.หัวข้อ /
URL
ต้องการย้ายฐานข้อมูล จาก foxpro มาเป็น ms access
ต้องการย้ายฐานข้อมูล จาก foxpro มาเป็น ms access
ต้องนี้ติดปัญหาอยู่สองเรื่องครับ
1.การตัดคำจากจากข้อมูล ที่อยู่ลูกค้า
ฐานข้อมูลถูกเก็บไว้ในฟิลด์เดียว ต.ย.เช่น
ADD15หมู่3 บางปะกอกADD1ADD2ราษฏร์บูรณะ กรุงเทพADD2TEL025647134TELFAX024657135FAX
ผมต้องการแยกเก็บเป็น
ADD1 = 5หมู่3 บางปะกอก
ADD2 = ราษฏร์บูรณะ กรุงเทพ
TEL = 025647134
FAX = 024657135
2.การคำนวณส่วนลด
ฐานข้อมูลถูกเก็บไว้ในฟิลด์เดียวเหมือนกัน
50%+10%+3%+100 หมายถึง ลด50% ลดอีก10% ลดอีก3% ลดอีก 100 บาท
หรืออาจจะเป็น
50%+100 หมายถึง ลด50% ลดอีก 100 บาท
หรืออาจจะเป็น
100 หมายถึง ลด 100 บาท
ซึ่งผมไม่รู้ว่าจะตัดคำให้คำนวณอย่างไร รบกวนแนะนำด้วยนะครับ
ต้องนี้ติดปัญหาอยู่สองเรื่องครับ
1.การตัดคำจากจากข้อมูล ที่อยู่ลูกค้า
ฐานข้อมูลถูกเก็บไว้ในฟิลด์เดียว ต.ย.เช่น
ADD15หมู่3 บางปะกอกADD1ADD2ราษฏร์บูรณะ กรุงเทพADD2TEL025647134TELFAX024657135FAX
ผมต้องการแยกเก็บเป็น
ADD1 = 5หมู่3 บางปะกอก
ADD2 = ราษฏร์บูรณะ กรุงเทพ
TEL = 025647134
FAX = 024657135
2.การคำนวณส่วนลด
ฐานข้อมูลถูกเก็บไว้ในฟิลด์เดียวเหมือนกัน
50%+10%+3%+100 หมายถึง ลด50% ลดอีก10% ลดอีก3% ลดอีก 100 บาท
หรืออาจจะเป็น
50%+100 หมายถึง ลด50% ลดอีก 100 บาท
หรืออาจจะเป็น
100 หมายถึง ลด 100 บาท
ซึ่งผมไม่รู้ว่าจะตัดคำให้คำนวณอย่างไร รบกวนแนะนำด้วยนะครับ
4 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R19489
ขอบคุณครับ คุณPichaiTc พอเห็นภาพแล้วน่าจะทำได้ครับ
ยังไงฝากข้อ 2 ด้วยนะครับ ฝาก อ. และผู้รู้ด้วยนะครับ
(ถ้าให้ต้องพิมพ์ใหม่คงไม่ไหว เพราะข้อมูลเก็บมานานกว่า 10ปีแล้ว ยังใช้ dos อยู่เลย)
ยังไงฝากข้อ 2 ด้วยนะครับ ฝาก อ. และผู้รู้ด้วยนะครับ
(ถ้าให้ต้องพิมพ์ใหม่คงไม่ไหว เพราะข้อมูลเก็บมานานกว่า 10ปีแล้ว ยังใช้ dos อยู่เลย)
3 @R19496
2. สร้าง table ใหม่ ตามโครงสร้างนี้
DiscountID Long
DiscountSeq Long
DiscountRate Single
เขียน code วน Loop เพื่อตัด string โดยดูจาก +
เพื่อ insert ลง table ที่สร้างไว้
ตัวอย่างข้อมูล
DiscountID - DiscountSeq - DiscountRate
1 - 1 - 0.5 (= 50%)
1 - 2 - 0.1 (= 10%)
1 - 3 - 0.03 (= 3%)
1 - 4 - 100
เวลาใช้งาน
เลือกใช้โดย Where DiscountID = เงื่อนไขที่ต้องการ
คำนวณเรียงตาม DiscountSeq
คำนวณค่าโดย
If DiscountRate < 1 then
Discount = Amount * DiscountRate
Else
Discount = DiscountRate
End If
DiscountID Long
DiscountSeq Long
DiscountRate Single
เขียน code วน Loop เพื่อตัด string โดยดูจาก +
เพื่อ insert ลง table ที่สร้างไว้
ตัวอย่างข้อมูล
DiscountID - DiscountSeq - DiscountRate
1 - 1 - 0.5 (= 50%)
1 - 2 - 0.1 (= 10%)
1 - 3 - 0.03 (= 3%)
1 - 4 - 100
เวลาใช้งาน
เลือกใช้โดย Where DiscountID = เงื่อนไขที่ต้องการ
คำนวณเรียงตาม DiscountSeq
คำนวณค่าโดย
If DiscountRate < 1 then
Discount = Amount * DiscountRate
Else
Discount = DiscountRate
End If
4 @R19502
ขอบคุณ คุณ pichaiTc อีกครั้ง พอดีพยายามอยู่นานเหมือนกันครับ
ได้ code มาตามนี้ เอามาแชร์กันครับ
แต่ต้องไปทำในฟอร์ม
Private Sub Form_Current()
Dim MemDisc As Double
Dim MemStartPoint As Integer
Dim MemEndPoint As Integer
TxtUnitPrice = [PRICE]
MemStartPoint = 1
If IsNull([DISCSTR]) Then
Else
If (InStr([MemStartPoint], [DISCSTR], "%")) = 0 Then
If [MemStartPoint] > Len([DISCSTR]) Then
Else
MemDisc = Mid([DISCSTR], [MemStartPoint], Len([DISCSTR]) - ([MemStartPoint] - 1))
TxtUnitPrice = TxtUnitPrice - MemDisc
End If
Exit Sub
Else
MemEndPoint = InStr([MemStartPoint], [DISCSTR], "%")
MemDisc = Mid([DISCSTR], [MemStartPoint], ([MemEndPoint] - [MemStartPoint]))
TxtUnitPrice = TxtUnitPrice * (1 - (MemDisc / 100))
End If
MemStartPoint = MemEndPoint + 1
Do Until [MemStartPoint] > Len([DISCSTR])
If IsNull([DISCSTR]) Then
Else
If (InStr([MemStartPoint], [DISCSTR], "%")) = 0 Then
If [MemStartPoint] > Len([DISCSTR]) Then
Else
MemDisc = Mid([DISCSTR], [MemStartPoint], Len([DISCSTR]) - ([MemStartPoint] - 1))
TxtUnitPrice = TxtUnitPrice - MemDisc
End If
Exit Sub
Else
MemEndPoint = InStr([MemStartPoint], [DISCSTR], "%")
MemDisc = Mid([DISCSTR], [MemStartPoint] + 1, ([MemEndPoint] - ([MemStartPoint] + 1)))
TxtUnitPrice = TxtUnitPrice * (1 - (MemDisc / 100))
End If
End If
MemStartPoint = MemEndPoint + 1
Loop
End If
End Sub
สามารถจะทำส่วนลดเป็น%ได้เรื่อย แต่ส่วนลดเป็นบาทจะอยู่ท้ายสุดได้ครั้งเดียว
ได้ code มาตามนี้ เอามาแชร์กันครับ
แต่ต้องไปทำในฟอร์ม
Private Sub Form_Current()
Dim MemDisc As Double
Dim MemStartPoint As Integer
Dim MemEndPoint As Integer
TxtUnitPrice = [PRICE]
MemStartPoint = 1
If IsNull([DISCSTR]) Then
Else
If (InStr([MemStartPoint], [DISCSTR], "%")) = 0 Then
If [MemStartPoint] > Len([DISCSTR]) Then
Else
MemDisc = Mid([DISCSTR], [MemStartPoint], Len([DISCSTR]) - ([MemStartPoint] - 1))
TxtUnitPrice = TxtUnitPrice - MemDisc
End If
Exit Sub
Else
MemEndPoint = InStr([MemStartPoint], [DISCSTR], "%")
MemDisc = Mid([DISCSTR], [MemStartPoint], ([MemEndPoint] - [MemStartPoint]))
TxtUnitPrice = TxtUnitPrice * (1 - (MemDisc / 100))
End If
MemStartPoint = MemEndPoint + 1
Do Until [MemStartPoint] > Len([DISCSTR])
If IsNull([DISCSTR]) Then
Else
If (InStr([MemStartPoint], [DISCSTR], "%")) = 0 Then
If [MemStartPoint] > Len([DISCSTR]) Then
Else
MemDisc = Mid([DISCSTR], [MemStartPoint], Len([DISCSTR]) - ([MemStartPoint] - 1))
TxtUnitPrice = TxtUnitPrice - MemDisc
End If
Exit Sub
Else
MemEndPoint = InStr([MemStartPoint], [DISCSTR], "%")
MemDisc = Mid([DISCSTR], [MemStartPoint] + 1, ([MemEndPoint] - ([MemStartPoint] + 1)))
TxtUnitPrice = TxtUnitPrice * (1 - (MemDisc / 100))
End If
End If
MemStartPoint = MemEndPoint + 1
Loop
End If
End Sub
สามารถจะทำส่วนลดเป็น%ได้เรื่อย แต่ส่วนลดเป็นบาทจะอยู่ท้ายสุดได้ครั้งเดียว
Time: 0.3239s
SELECT
InStr(1,[FoxAddress],"ADD1") AS ADD1Start
, InStr([ADD1Start]+1,[FoxAddress],"ADD1") AS ADD1End
, Mid([FoxAddress],Len("ADD1")+[ADD1Start],[ADD1End]-[ADD1Start]-Len("ADD1")) AS ADD1
, InStr(1,[FoxAddress],"ADD2") AS ADD2Start
, InStr([ADD2Start]+1,[FoxAddress],"ADD2") AS ADD2End
, Mid([FoxAddress],Len("ADD2")+[ADD2Start],[ADD2End]-[ADD2Start]-Len("ADD2")) AS ADD2
, InStr(1,[FoxAddress],"TEL") AS TELStart
, InStr([TELStart]+1,[FoxAddress],"TEL") AS TELEnd
, Mid([FoxAddress],Len("TEL")+[TELStart],[TELEnd]-[TELStart]-Len("TEL")) AS TEL
, InStr(1,[FoxAddress],"FAX") AS FAXStart,
InStr([FAXStart]+1,[FoxAddress],"FAX") AS FAXEnd
, Mid([FoxAddress],Len("FAX")+[FAXStart],[FAXEnd]-[FAXStart]-Len("FAX")) AS FAX
FROM tb_Fox