Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > ASP > ASP Forum > รบกวนปัญหาเรื่อง การค้นหาข้อมูลอีกแล้วครับ..!! เมื่อกี้ผมค้นหาได้แล้วครับ แต่ทีนี้ต้องทำรายงาน



 

รบกวนปัญหาเรื่อง การค้นหาข้อมูลอีกแล้วครับ..!! เมื่อกี้ผมค้นหาได้แล้วครับ แต่ทีนี้ต้องทำรายงาน

 



Topic : 031524



โพสกระทู้ ( 30 )
บทความ ( 0 )



สถานะออฟไลน์




เมื่อกี้ผมค้นหาได้แล้วครับ แต่ทีนี้ต้องทำรายงานอีกแบบ ซึ่งเป็นการค้นหาจากคนละตาราง

พยายามจะเขียน SQL แต่มัน Error ตลอดเลยครับ..รบกวนด้วยครับ

...แบบนี้ต้องการรายงานจาก เพศ ซึ่งต้องคำนวณจาก คำนำหน้าเอาอ่ะครับ

head

ขึ้นว่า "นาย" ให้นับ ชาย =1 เพิ่มไปเรื่อย ๆ ประมาณนี้อ่ะครับ

โดยคำนำหน้าอยู่ตารางที่ชื่อว่า PrivatePersonal ชื่อฟิลด์ว่า prefixth

ส่วนตารางที่เก็บว่า ใครอยู่แผนกอะไร คือ Jobpersonal

table1

นี่คือ คำสั่งที่ผมเขียนแล้วมัน Error อ่ะครับ

Code (ASP)
<%
   dim a,sex1(12),sex2(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
%>


รบกวนช่วยดูด้วยครับ..ขอบคุณมากครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-09-09 14:53:49 By : rachai.p View : 1897 Reply : 12
 

 

No. 1



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่รู้ว่า error ว่าอย่างไรแต่เดาว่า

ผิดตรงนี้
for a = 1 to 12

ต้องเป็น
for a = 0 to 11

เพราะ index ของ array เริ่มที่ 0 ครับ






Date : 2009-09-09 16:07:10 By : luecha
 


 

No. 2



โพสกระทู้ ( 30 )
บทความ ( 0 )



สถานะออฟไลน์


โทดทีครับ..พลาดไปนิดนึงครับ..ลืม 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
 

 

No. 3



โพสกระทู้ ( 30 )
บทความ ( 0 )



สถานะออฟไลน์


ทุกท่านครับ ผมรอคำตอบอยู่นะคัรบ..

ด่วนจริง ๆ ครับ..ผมต้องขึ้นสอบจบโท ภายในวันที่ 15 นี้แล้วอ่ะครับ

รบกวนจริง ๆ ครับ..มีท่านใดพอจะช่วยได้บ้างไหม๊ครับ
Date : 2009-09-10 22:04:30 By : rachai.p
 


 

No. 4



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์


ที่เห็นว่าผิดก็ตรง SQL


ตรงนี้ สกดผิด
Count(privateperosnal.id)

ต้องเป็น
Count(privatepersonal.id)
Date : 2009-09-11 00:46:54 By : luecha
 


 

No. 5



โพสกระทู้ ( 16 )
บทความ ( 0 )



สถานะออฟไลน์


อาจ error ตรง ' ' ลองเอาออกดูนะค่ะ

WHERE [preduhigth]='"&edu(b)&"' and [privatepersonal.prefixth]='"&n1&"' "
Date : 2009-09-11 07:52:18 By : kookkik
 


 

No. 6

Guest


ครับท่าน 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
 


 

No. 7



โพสกระทู้ ( 367 )
บทความ ( 0 )



สถานะออฟไลน์


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
 


 

No. 8



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์


/people/admin_main.asp, line 215

....
จาก error บอกว่าผิดเป็นที่บรรทัดที่ 215
ดแล้วูไม่น่าจะ error ตรง code ที่ post มานะครับ
เพราะ ไม่เห็นมี Jo_PrCode อยู่ใน SQL เลย
Date : 2009-09-11 12:06:34 By : luecha
 


 

No. 9



โพสกระทู้ ( 30 )
บทความ ( 0 )



สถานะออฟไลน์


ท่าน luecha ครับ..

error line 215 ที่ว่าเนี่ยะ..มัน error จากกระทู้ที่ 1 อ่ะครับ

มันติดบรรทัดนี้แหละ..ผมเลยยังทำอย่างอื่นไม่ได้เลยครับ

รบกวนท่านผู้รู้ทุกท่านด้วยครับ
Date : 2009-09-12 09:51:42 By : rachai.p
 


 

No. 10



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์


ขอดู code ทั้งหมดของ
/people/admin_main.asp

หรือตัดมาในส่วนที่มี อยู่หน่อยครับ จะได้วิเคราะห์ได้
Jo_PrCode
Date : 2009-09-12 10:40:44 By : luecha
 


 

No. 11



โพสกระทู้ ( 30 )
บทความ ( 0 )



สถานะออฟไลน์


ท่าน luecha ครับ ..มัน 600 กว่าบรรทัดเลยอ่ะครับ ผมขี้เกียจเอามาโพส

เอาแค่เฉพาะส่วนที่เกี่ยวข้อง แล้วก็ส่วนที่ทำได้แล้วกันนะครับ

นี่คือ หน้าตาที่ผมต้องการ

1

นี่คือ โค๊ดของรายการประเภทครับ

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


นี่คือ จำแนกตามคุณวุฒิ

2

นี่คือ โค๊ดของแยกตามคุณวุฒิ

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


และนี่คือ จำแนกตามใบประกอบวิชาชีพ

3

นี่คือ โค๊ดของจำแนกตามใบประกอบวิชาชีพครับ

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
 


 

No. 12



โพสกระทู้ ( 43 )
บทความ ( 0 )



สถานะออฟไลน์


ผมจำได้ว่า ผมเคยเขียน 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
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนปัญหาเรื่อง การค้นหาข้อมูลอีกแล้วครับ..!! เมื่อกี้ผมค้นหาได้แล้วครับ แต่ทีนี้ต้องทำรายงาน
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่