Fri 10 Mar 2006 20:34:27
คือมี Field ตามนี้อยู่นะครับ
-name
-ValuesAdjust
ผมจะนำค่าจาก Field(ValuesAdjust) คำนวณมาบวกกันพอจะมีวิธีหรือป่าวครับ
Do While Not rs.Eof
With Response
.Write"<tr bgcolor=daeef5><td align=center>" &"<font size=2>"&sum &"</font>"& "</td>"
.Write"<td align=center>" &"<font size=2>"& rs("IdentityCard") & "</font>"&"</td>"
.Write"<td align=center>" &"<font size=2>"& rs("Name") & "</font>"&"</td>"
.Write"<td align=center>" & "<font size=2>"&rs("Story") & "</font>"&"</td>"
.Write"<td align=center>" & "<font size=2>"&rs("ValuesAdjust") & "</font>"&"</td>"
.Write"<td align=center>" & "<font size=2>"&"อ."&rs("city1")&"จ."&rs("provid_order")&"<br>"& "</font>"&"</td>"
.Write"<td align=center>" & "<font size=2>"&rs("OrderDate") &"<br>"&"เวลา: "&rs("mytime")& "</font>"&"</td>"
sum=sum+1
num=num+1
End With
rs.MoveNext
Loop
Thu 23 Mar 2006 01:01:02
รบกวนหน่อยนะครับ
คือสมมุติว่าผมทำระบบหนึ่งขึ้นมาทำด้วยภาษา ASP ซึ่งผมลองนำไปติดตั้งแล้วซึ่งเครื่องที่ผมติดตั้งระบบนี้ใช้ os เป็น windows xp นะครับ และภายในองค์กรเค้ามีวง lan อยู่มีเครื่องประมาณซัก 5-6 เครื่อง ตอนนี้ผมจะให้ทุกเครื่องสามารถเรียกใช้ระบบที่ผมได้ติดตั้งไว้ที่เครื่องๆ นั้นนะครับ โดยเรียกผ่านทาง Internet Explorer นะครับ โดยพิมพ์ชื่อเครื่องหรืออ้างถึง ip address ของเครื่องนั้น ผ่านทาง URL นะครับ เช่น http://192.168.10.3/System.asp
ประมาณนี้นะครับ
คืออยากจะทำให้เครื่องนั้นเป็นเครื่อง server นะครับโดยที่ไม่ต้องเปลี่ยน os นะครับ คือใช้ win xp เหมือนเดิมนะครับ ช่วยรบกวนแนะนำหน่อยนะครับ
ขอบคุณครับ
ถ้าไม่มี Dedicate IP ก็สามารถใช้บริการ Dynamic dns ได้ครับ ต้องติดตั้ง Software เพื่อให้ทำการ update ip address ที่ name server และถ้าอยู่หลัง firewall ต้องทำการเปิด port หรือ forward port มายังเครื่องที่ให้บริการด้วยครับ
http://www.google.co.th/search?hl=th&q=dynamic+dns&btnG=%E0%B8%84%E0%B9%89%E0%B8%99%E0%B8%AB%E0%B8%B2&meta=
Mon 3 Apr 2006 23:55:11
รบกวนหน่อยนะครับ
คือลักษณะการทำงานของโปรแกรมที่ผมทำขึ้นคือการจับกุมผู้กระทำความผิดกฎหมายจราจร คือ 1 ใบสั่ง ต่อ 1 ข้อหา 1 หมายเลขคดีเปรียบเทียบปรับ นะครับ
แต่ตอนนี้ที่ทำขึ้นมาคือ 1 ใบสั่งต่อ 1 ข้อหา ต่อ 1 หมายเลขคดีเปรียบเทียบปรับ
ตัวอย่างนะครับ
---------------------------------
คดีเปรีบเทียบ 001
เลขที่ใบสั่ง 17063
ข้อหา
| ขับรถเร็ว | 50 บาท |
| เมาแล้วขับ | 100 บาท |
ถ้าหาว่าผมจะทำการบันข้อหาแรกคือ
ขับรถเร็ว ค่าปรับ 50
คดีเปรีบเทียบ 001
เลขที่ใบสั่ง 17063
ส่วนข้อหาที่ 2
เมาแล้วขับ ค่าปรับ 100
คดีเปรีบเทียบ 002
เลขที่ใบสั่ง 17064
* ซึ่ง คดีเปรียบเทีย และ เลขที่ใบสั่งผมจะให้โปรแกรมกำหนดต่อจากข้อหาแรก
คือ 001 และ 1764 ให้โดยอัตโนมัติ
และตอนนี้ หน้า webpage หน้านี้ผมทำให้สามารถเลือกได้หลายข้อหาประมาณซัก 20
ข้อหาซึ่งจะเช็คโดยใช้ Checkbox นะครับ
ซึ่งหากอันไหนไม่ได้ทำการเลือกก็ให้เว้นไปไม่ต้องทำการบันทึกปัญหาคือผมจะรันให้
หมายเลขคดีเปรียบเทียบและเลขที่ใบสั่งโดยเรียงลำดับดย่างเช่น
ผมเลือกข้อหาที่ 1,2,4,6
ซึงข้อหาที่ข้ามมาคือข้อหาที่ 3 และ 5 แล้วผมป้อน
คดีเปรียบเทียอันแรกคดีที่ 1 เป็น 001
เลขที่ใบสั่ง คดีที่ 1 เป็น 17063
ส่วนคดีที่ 2 คดีเปรียบเทียบเป็น 002 เลขที่ใบสั่งเป็น 17064
ส่วนคดีที่ 4 คดีเปรียบเทียบเป็น 003 เลขที่ใบสั่งเป็น 17065
ส่วนคดีที่ 6 คดีเปรียบเทียบเป็น 004 เลขที่ใบสั่งเป็น 17066
ครับประมาณนี้แหละครับ ช่วยผมแก้ไขด้วยนะครับ งง มากเลยครับ ขอบคุณครับ
#cases (คดี)
- id int auto_increment
- ticketno int (FK for tickets)
#tickets (ใบสั่ง)
- id int auto_increment
- chargeid (FK for charges)
- fine int
#charges (ข้อหา)
- id int
- chargename varchar
ส่วนของโปรแกรมนั้น เมื่อทำการ insert เข้าไปยัง table tickets แล้วก็จะได้เลขที่ใบสั่งเพื่อนำไปใช้เพื่ออ้างอิงใน table cases
ซึ่งถ้าใช้ MS SQL จะมี @@identity เพื่อใช้อ้างอิงในการ insert ได้ครับ
Tue 4 Apr 2006 13:10:49
ตอนนี้ผมทำการเช็คได้แล้วค่าจาก checkbox ตัวไหนที่ทำการเลือกก็จะทำการ insert ลงในฐานข้อมูล และปัญหาอีกอย่างคือตอนที่ผมเลือกเช็คค่าจาก checkbox แล้วจะแสดงค่าปรับออกมาที่ textbox
จัวอย่าง code นะครับ
หน้า saveAdjust.asp
<script language="javascript">
function showData(obj,txt){
var theform = obj.form;
theform.info.value = txt;
}
function showData1(obj,txt){
var theform = obj.form;
theform.txtValue1.value = txt;
}
</script>
ตัว checkbox นะครับ
ตัวที่ 1 <input name="cek" type="checkbox" id="cek26" value="ขับรถฝ่าฝืนสัญญาณไฟจราจรสีแดง" onclick="showData1(this, '400')">
ตัวที่ 2 <input name="cek" type="checkbox" id="cek" value="ขับรถฝ่าฝืนเครื่องหมายบนพื้นทาง" onclick="showData2(this, '300')">
คือตอนนี้ checkbox เป็น array นะครับ ส่วน textbox ไม่ใช่นะครับ
พอผมคลิกเลือกทั้งสองข้อหาแล้วทำการส่งค่าไปยังหน้า saveAdjust_1.asp
ผมทำการรับค่าอย่างนี้นะครับ
myValue=request.form("txtValue1")
myChebox=request.form ("cek")
myarray = Split(myChebox, ",")
For n=0 to UBound(myarray )
counter=counter+1
sumnumber=sumnumber+1
sum=counter + Adjust
mystory=myarray(n)
Response.write myarray(n) & _
"คดีเปรียบเทียบที่ :"&sum&" เลขที่ใบสั่ง : " &sumnumber &"<br>"
next
ซึ่งการใช้ for ในการวนเพื่อแสดงข้อมูลก็ได้ตามที่ผมถามไปข้างต้นนะครับเช่น
ข้อหา 2 ข้อหา แล้วป้อนคดีเปรียบเทียบอันเป้น 001 ข้นหาที่ 2คดีเปรียบเทียบป็น 002 ให้โดยทันทีคือรันตามข้อหาไปเรื่อย ๆ แล้วแต่ข้อหาที่ได้ทำการเลือก
*แล้วผมจะนำค่าปรับจาก textbox เหล่านั้นมาอย่างไรครับ เพื่อให้ตรงกับข้อหาที่ได้ทำการเลือก
รบกวนช่วยตอบหน่อยนะครับ
ขอบคุณมากครับ
ส่วนการเซ็ทค่านั้นก็ document.all?(document.all["valueDSP"].innerHTML = txt)
และทำการเซ็ทค่าไว้ใน hidden field ด้วยครับเพื่อใช้ในการส่งค่าไปบันทึก
document.all?(document.all["txtValue1"].innerHTML = txt)
เพื่อป้องกันการแก้ไขซึ่งจะทำให้มีการส่งค่ามาบันทึกไม่ถูกต้องได้ครับ
ส่วนการคำนวนนั้นถ้าใช้สูตรเดียวกันแล้วก็จะได้ค่าตรงกันครับ
ส่วนการรันตัวเลขนั้นผมไม่แน่ใจมีการแปลงตัวเลขเป็น string โดยการ format เหมือน sprintf ได้หรือไม่ครับ ซึ่งคุณสามารถใช้ sumnumber มาใช้ในการอ้างอิงได้ครับ
Tue 4 Apr 2006 15:27:19
ไม่เข้าใจครับ <span id="valueDSP"></span> คืออะไรเหรอครับ
คือตอนนี้ผมไม่ได้ทำการคำนวณค่าปรับนะครับเพียงแต่เอาค่าปรับและข้อหาที่จะทำการบันทึกให้ตรงกันนะครับ
คือ 1 ข้อหา ต่อ 1 ดคีเปรียบเทียบ เช่น
ถูกจับ 3 ข้อหา
ข้อหาที่ 1 ข้อหา ขับรถเร็ว คดีเปรียบเทียบที่ 001 ค่าปรับ 200
ข้อหาที่ 2 ข้อหา เมาแล้วขับ คดีเปรียบเทียบที่ 002 ค่าปรับ 500
ข้อหาที่ 3 ข้อหา แข่งรถในที่สาธารณะ คดีเปรียบเทียบที่ 003 ค่าปรับ 500
ซึ่งผมก็จะเก็บข้อมูลเหล่านี้ลงในฐานข้อมูลอยู่ 3 รายการ
| ข้อหา | ค่าปรับ | คดีเปรียบเทียบ |
| ขับรถเร็ว | 200 | 001 |
| เมาแล้วขับ | 500 | 002 |
| แข่งรถในที่สาธารณะ | 500 | 003 |
ซึ่งตอนนี้ผมส่งค่ามาบันทึกได้เพียง ข้อหา,คดีเปรียบเทีบ ส่วนค่าปรับยังไม่สามารถส่งมาได้ครับ
ส่วนถ้าเป็นค่าตายตัวก็สามารถสร้างตารางราคา โดยอ้างอิงตามข้อหาได้ครับ จากนั้นเมื่อรับค่ามาจาก checkbox แล้วก็นำค่าเหล่านั้นมา query จากตารางค่าปรับดังกล่าวว่ามีค่าเป็นเท่าใดแล้วนำไปบันทึกอีกทีครับ
Tue 4 Apr 2006 18:59:00
ตอนนี้ชื่อ textbox อย่างนี้นะครับ txtValue1-txtValue20 คือตอนนี้ส่งค่ามาได้แล้วนะครับแต่ติดตรงที่ตำแหน่งของ checkbox และตำแหน่งของ txtValue ไม่ตรงกันนะครับ ซึ่งตำแหน่งของ checkbox จะแสดงเฉพาะตำแหน่งตัวที่ทำการเลือกเท่านั้น แต่ตำแหน่งของ txtValue เนี่ยซิครับ จะไห้ตรงกับตำแหน่งที่ checkbox นั้น ได้ทำการเลือกอย่างไรดีครับ
myChebox=request.form ("cek")
myarray = Split(myChebox, ",")
For n=0 to UBound(myarray )
counter=counter+1
sumnumber=sumnumber+1
sum=counter + Adjust
mystory=myarray(n)
Response.write myarray(n) & _
"คดีเปรียบเทียบที่ :"&sum&" เลขที่ใบสั่ง : " &sumnumber &"<br>"
txtValue=request.form("txtValue"&n) 'ตรงนี้แหละครับที่ผมอ้างถึงตำแหน่งของ txtValue นะครับ
next
<script language="javascript"
function enableForm(obj){
var theForm = obj.form;
for(i = 0; i < theForm.cases.length; i++){
theForm.fines[i].disabled = theForm.cases[i].checked;
}
}
</script>
<input type="checkbox" name="cek[]" onclick="enableForm(this)"><input type="text" name="fines[]" disabled>
<input type="checkbox" name="cek[]" onclick="enableForm(this)"><input type="text" name="fines[]" disabled>
...
<input type="checkbox" name="cek[]" onclick="enableForm(this)"><input type="text" name="fines[]" disabled>
จากฟอร์มทำการ disabled text ที่ไม่มีการใช้งานเพื่อให้มีการส่งต่าเฉพาะที่ใช้งานเท่านั้น
ส่วนในการรับค่านั้นอาจจะเป็น
myChebox=request.form ("cek")
myarray = Split(myChebox, ",")
For i = LBound(myarray) to UBound(myarray)
......
'แล้วก็ทำการอ้างถึง textbox แบบ array แทนครับ
Next
Tue 4 Apr 2006 21:41:05
อีกหน่อยนะครับตามนี้นะครับ
For n=0 to UBound(myarray )
txtValue=request.form("txtValue"&n+1 )
counter=counter+1
sumnumber=sumnumber+1
sum=counter + Adjust
mystory=myarray(n)
Response.write myarray(n)
Response.write"คดีเปรียบเทียบที่ :"&sum&" เลขที่ใบสั่ง : " &sumnumber &"<br>"
Sql="Select * from TblStoryFix where Story1 like '%"&mystory&"%'"
Set RS=Server.CreateObject("ADODB.Recordset")
RS.open Sql,Conn,1,3
while not rs.EOF
response.write "ค่าปรับ: "&RS("myValue")
rs.MoveNext
wend
Next
ถ้าหากผมทำอย่างที่แนะนำคือให้ค่าปรับเป็นค่าตายตัวแล้วนำมาเปรียบเทียบค่าปรับในฐานข้อมูลอีกที ก็จะแสดงออกมาได้นะครับ แต่จะแสดงอันเดียวนะครับ ผมจะวนอย่างไรดีให้แสดงค่าปรับทุกข้อหาตามที่เราเลือกออกมา
โดยปกติแล้วค่าที่ได้จากการ query ค่าปรับนั้นควรจะได้มาค่าเดียว (SELECT TOP 1 ...) ไม่ทราบว่าใน ASP ถ้าไม่วนลูปเพื่อแสดงค่านั้นทำได้หรือไม่ครับ
ซึ่งคุณอาจจะสร้าง Function เพื่อใช้ในการหาค่าปรับก็ได้ครับโดยคืนค่ากลับมาในลูปเพื่อใช้ในการแสดงผลครับ

















