 |
|
รบกวนปัญหาเรื่อง การค้นหาข้อมูลอีกแล้วครับ..!! เมื่อกี้ผมค้นหาได้แล้วครับ แต่ทีนี้ต้องทำรายงาน |
|
 |
|
|
 |
 |
|
ไม่รู้ว่า error ว่าอย่างไรแต่เดาว่า
ผิดตรงนี้
for a = 1 to 12
ต้องเป็น
for a = 0 to 11
เพราะ index ของ array เริ่มที่ 0 ครับ
|
 |
 |
 |
 |
Date :
2009-09-09 16:07:10 |
By :
luecha |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โทดทีครับ..พลาดไปนิดนึงครับ..ลืม Copy Error มาให้ดูด้วย.แหะ แหะ
ไม่น่าจะผิดที่ Index ของ Array หรอกครับ เพราะตอนเก็บผมวนเก็บเริ่มต้นที่ 1
ดังนั้น 0 จึงไม่ได้เก็บ...แต่ Error มันเป็นแบบนี้นะครับ
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'Jo_PrCode' as part of an aggregate function.
ผมจำเป็นต้องรายงานหลาย ๆ แบบอ่ะครับ.. นี่คืออีกแบบนึงนะครับ รายงานเป็นการระดับการศึกษา แล้วนับจำนวน พร้อมแยกเพศด้วยอ่ะครับ
Code (ASP)
<%
dim b,edu(8),sexedu1(12),sexedu2(12)
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("db/personal.mdb")
set rs=server.createobject("adodb.recordset")
edu(1) = "ป.6"
edu(2) = "ม.3"
edu(3) = "ม.6"
edu(4) = "ปวช."
edu(5) = "ปวส."
edu(6) = "ปริญญาตรี (หรือเทียบเท่า)"
edu(7) = "ปริญญาโท"
edu(8) = "ปริญญาเอก"
n1 = "นาย"
n2 = "นาง"
n3 = "นางสาว"
for b = 1 to 8
SQL = " SELECT count(privateperosnal.id) as countprid FROM [privatepersonal] WHERE [preduhigth]='"&edu(b)&"' and [privatepersonal.prefixth]='"&n1&"' "
set Rs = Conn.Execute(SQL)
sexedu1(b)=rs(0)
next
%>
นี่ก็ Error มันคือ
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/people/admin_main.asp, line 398
|
 |
 |
 |
 |
Date :
2009-09-09 16:23:10 |
By :
rachai.p |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทุกท่านครับ ผมรอคำตอบอยู่นะคัรบ..
ด่วนจริง ๆ ครับ..ผมต้องขึ้นสอบจบโท ภายในวันที่ 15 นี้แล้วอ่ะครับ
รบกวนจริง ๆ ครับ..มีท่านใดพอจะช่วยได้บ้างไหม๊ครับ
|
 |
 |
 |
 |
Date :
2009-09-10 22:04:30 |
By :
rachai.p |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ที่เห็นว่าผิดก็ตรง SQL
ตรงนี้ สกดผิด
Count(privateperosnal.id)
ต้องเป็น
Count(privatepersonal.id)
|
 |
 |
 |
 |
Date :
2009-09-11 00:46:54 |
By :
luecha |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อาจ error ตรง ' ' ลองเอาออกดูนะค่ะ
WHERE [preduhigth]='"&edu(b)&"' and [privatepersonal.prefixth]='"&n1&"' "
|
 |
 |
 |
 |
Date :
2009-09-11 07:52:18 |
By :
kookkik |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ครับท่าน luecha แต่มันก็ยังมี Error เหมือนเดิมอ่ะครับ
Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'Jo_PrCode' as part of an aggregate function.
/people/admin_main.asp, line 215
มันหมายความว่าไงอ่ะครับ...แล้วจะแก้ไขยังไงดี
|
 |
 |
 |
 |
Date :
2009-09-11 08:20:33 |
By :
rachai.p |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SQL = " SELECT count(id) as countprid FROM privatepersonal WHERE preduhigth = '"&edu(b)&"' and prefixth = ' "&n1&" ' "
---------------------------------------- เมาส์ ----------------------------------------------------
' ' ซิงเกิ้นโคด ตัวนี้ไว้ครอบฟิวด์ ที่เป็นสตริงถูกต้องแล้วถ้าป็น int จึงไม่ต้องใส่ หรือ ถ้าจะใส่แบบ
ไม่ระบุให้ใช้ [] ไปเลย
ข้อผิดพลาดที่อาจเกิดได้เล็กๆน้อยๆแต่เรา มองข้ามคือ ช่องว่างระหว่างโปเปอเรเตอร์ ครับ เช่น
ตอนเขียนให้มโภาพออกมาเป้น SQL command
SELECT count(id) as countprid FROM privatepersonal WHERE preduhigth = 'ปริญญาตรี' and prefixth = 'นาย'
เห็นแล้วใช่มั้ยครับว่า ถ้าใส่ preduhigth = ปริญญาตรี ตายแง๋แก๋
การเคาะวรรค สำคัญมาก เช่น
SELECT count(id) as countprid FROM privatepersonal WHEREpreduhigth='ปริญญาตรี' andprefixth='นาย'
แบบนี้ ก็ไม่รอด
---------------------------------------- end ----------------------------------------------------
|
 |
 |
 |
 |
Date :
2009-09-11 10:48:36 |
By :
Joe_Dev |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
/people/admin_main.asp, line 215
....
จาก error บอกว่าผิดเป็นที่บรรทัดที่ 215
ดแล้วูไม่น่าจะ error ตรง code ที่ post มานะครับ
เพราะ ไม่เห็นมี Jo_PrCode อยู่ใน SQL เลย
|
 |
 |
 |
 |
Date :
2009-09-11 12:06:34 |
By :
luecha |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ท่าน luecha ครับ..
error line 215 ที่ว่าเนี่ยะ..มัน error จากกระทู้ที่ 1 อ่ะครับ
มันติดบรรทัดนี้แหละ..ผมเลยยังทำอย่างอื่นไม่ได้เลยครับ
รบกวนท่านผู้รู้ทุกท่านด้วยครับ
|
 |
 |
 |
 |
Date :
2009-09-12 09:51:42 |
By :
rachai.p |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอดู code ทั้งหมดของ
/people/admin_main.asp
หรือตัดมาในส่วนที่มี อยู่หน่อยครับ จะได้วิเคราะห์ได้
Jo_PrCode
|
 |
 |
 |
 |
Date :
2009-09-12 10:40:44 |
By :
luecha |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ท่าน luecha ครับ ..มัน 600 กว่าบรรทัดเลยอ่ะครับ ผมขี้เกียจเอามาโพส
เอาแค่เฉพาะส่วนที่เกี่ยวข้อง แล้วก็ส่วนที่ทำได้แล้วกันนะครับ
นี่คือ หน้าตาที่ผมต้องการ

นี่คือ โค๊ดของรายการประเภทครับ
Code (ASP)
<%
dim i,dept1(12),dept2(12),dept3(12),dname(12)
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("db/personal.mdb")
set rs=server.createobject("adodb.recordset")
n1 = "ข้าราชการ"
n2 = "พนักงานราชการ"
n3 = "ลูกจ้าง"
for i = 1 to 12
SQL = " SELECT count(joid) as countjoid FROM [jobpersonal] WHERE [joid]='"&i&"' and [jotype]='"&n1&"' "
set Rs = Conn.Execute(SQL)
dept1(i)=rs(0)
next
for i = 1 to 12
SQL1 = " SELECT count(joid) as countjoid FROM [jobpersonal] WHERE [joid]='"&i&"' and [jotype]='"&n2&"' "
set Rs = Conn.Execute(SQL1)
dept2(i)=rs(0)
next
for i = 1 to 12
SQL2 = " SELECT count(joid) as countjoid FROM [jobpersonal] WHERE [joid]='"&i&"' and [jotype]='"&n3&"' "
set Rs = Conn.Execute(SQL2)
dept3(i)=rs(0)
next
rs.close
%>
นี่คือ จำแนกตามคุณวุฒิ

นี่คือ โค๊ดของแยกตามคุณวุฒิ
Code (ASP)
<%
dim c,sumedu(8),edu(8)
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("db/personal.mdb")
set rs=server.createobject("adodb.recordset")
edu(1)="ป.6"
edu(2)="ม.3"
edu(3)="ม.6"
edu(4)="ปวช."
edu(5)="ปวส."
edu(6)="ปริญญาตรี (หรือเทียบเท่า)"
edu(7)="ปริญญาโท"
edu(8)="ปริญญาเอก"
for c = 1 to 8
SQL = " SELECT count(id) as countedu FROM [privatepersonal] WHERE [preduhigth]='"&edu(c)&"' "
set Rs = Conn.Execute(SQL)
sumedu(c)=rs(0)
totaledu=totaledu+sumedu(c)
next
rs.close
%>
และนี่คือ จำแนกตามใบประกอบวิชาชีพ

นี่คือ โค๊ดของจำแนกตามใบประกอบวิชาชีพครับ
Code (ASP)
<%
dim d,sumjopass(3),jopass(3)
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("db/personal.mdb")
set rs=server.createobject("adodb.recordset")
jopass(1)="ผู้บริหาร"
jopass(2)="ครู"
jopass(3)="ไม่มี"
for d = 1 to 3
SQL = " SELECT count(jo_prcode) as countjo FROM [jobpersonal] WHERE [jopass]='"&jopass(d)&"' "
set Rs = Conn.Execute(SQL)
sumjopass(d)=rs(0)
totaljopass=totaljopass+sumjopass(d)
next
rs.close
%>
ผมเขียนแบบบ้าน ๆ เลย ไม่ได้ใช้ Function อะไรทั้งนั้น แต่ว่า ติด Error ที่เดียว
เรื่องแยกเพศนี่แหละครับ..
โค๊ดมันนะครับ
Code (ASP)
<%
dim a,sex1(12),sex2(12),dsex(12)
set conn=server.createobject("adodb.connection")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&server.mappath("db/personal.mdb")
set rs=server.createobject("adodb.recordset")
n1 = "นาย"
n2 = "นาง"
n3 = "นางสาว"
for a = 1 to 12
SQL = " SELECT jobpersonal.*,privatepersonal.*,count(privateperosnal.id) as countprid FROM [privatepersonal],[jobpersonal] WHERE [jobpersonal.jo_prcode]=[privatepersonal.id] and [jobpersonal.joid]='"&a&"' and [privatepersonal.prefixth]='"&n1&"' "
set Rs = Conn.Execute(SQL)
sex1(a)=rs(0)
next
%>
ตามจริงผมต้องเขียนอย่างอื่นด้วยอีก เพื่อบวกค่านับว่า ชาย กี่คน หญิงกี่คน แต่ติดแค่ SQL ยังไม่ผ่าน ก็เลยไม่ได้ทำอะไรต่อเลยครับ
|
 |
 |
 |
 |
Date :
2009-09-12 18:20:49 |
By :
rachai.p |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมจำได้ว่า ผมเคยเขียน code ตัวอย่างการนับจำนวนในแบบที่ใช้ rs(0) แทนที่จะใช้ rs("countprid")
เพราะผมชอบเขียนแบบสั้นจึงใช้ index ของ fields แทนชื่อ filed และที่ใช้ rs(0) เพราะรู้อยู่แล้วว่า
ผลลัพท์ที่ได้จากการ Execute จะได้มาแค่ Filed เดียว ผมจึงใช้ rs(0) สั้นดีจริงมั๊ย
แต่ที่คุณเขียน SQL แบบนี้
SELECT jobpersonal.*,privatepersonal.*,count(privateperosnal.id) as countprid FROM ......
ถ้าเขียนถูกมันจะได้ มาหลาย filed แต่คุณต้องการใช้แค่ filed เดียวคือจำนวนที่นับ Count()
ฉนันควรจะเป็นแบบนี้มากกว่า
SELECT Count(privateperosnal.id) FROM ......
และไม่จำเป็นต้องไปตั้งชื่อ alias ให้ SQL ยาวเปล่าๆ เพราะ ยังงัยก็ใช้ rs(0) อยู่ดี
|
 |
 |
 |
 |
Date :
2009-09-13 02:01:33 |
By :
luecha |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|