PDA

View Full Version : مشکل در CursorType



rezamicro
یک شنبه 27 خرداد 1386, 12:19 عصر
با سلام خدمت دوستان عزیز
برنامه من بصورت زیر میباشد :
نوع کانکشن : DSN
متد اجرای دستورات : Conn.Execute(sql)

<!--#include file="adovbs.inc" -->
<%
Dim Conn, strSQLproject, Recordset
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=heartofntp;PWD=ntp"
%>


Dim Conn, strSQLproject, Recordset
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DSN=domain;PWD=sss"
strSQLproject = "SELECT * FROM project ORDER BY ID DESC"
Set RSproject = Conn.Execute(strSQLproject)
Do While not RSproject.EOF
Response.Write (RSproject("p_company")&"
")
Response.Write (RSproject("p_tel")&"
")
Response.Write RSproject("p_company")
Response.Write ("
")
RSproject.MoveNext
Loop
RSproject.close
Set RSproject=nothing

با توجه به اینکه در برنامه بالا CursorType تعریف نشده است حالت پیش فرض forward-only cursor است و باعث شده پس از اجرای برنامه در خطهای زیر


Response.Write
(RSproject("p_company")&"
")
Response.Write (RSproject("p_tel")&"
")
Response.Write RSproject("p_company")

فقط خط اول و دوم دارای خروجی هستند و خط سوم که تکرار خط اول است چون cursor بایستی به ابتدای Table در پایگاه برکردد و cursor از نوع forward-only cursor میباشددوباره خط سوم قابل اجرا نیست و زمانی که از دستور RSproject.CursorType = adOpenKeyset در خط بعد از فرمان Conn.Execute استفاده میکنم با خطای زیر مواجه میشوم :
ADODB.Recordset (0x800A0E79)
Operation is not allowed when the object is open.
به نظرم مفهوم خطا اینه که زمانی که ما recordset رو باز کردیم دیگه نمیتونیم خصوصیتCursorType برای اون تعریف کنیم
دوستان عزیز من با کانکشنهای DNS-Less یا متدهای بجز Conn.Execute هیچگونه مشکلی ندارم در کل نمیدونم در این حالت چطوری CursorType تعریف کنم
با تشکر

rezamicro
دوشنبه 28 خرداد 1386, 00:55 صبح
دوستان عزیز شاید تاپیک ارسالی اول کمی گیج کننده باشه ولی برای فهم بهتر آن اینطور بیان میکنم که :
به چه صورت میتوان Cursor Taype را زمانی که از متد Execute برای اجرای فرمان های Sql استفاده میکنیم از حالت پیش فرض که forward-only cursor میباشد تغییر دهیم؟

mermaid
دوشنبه 04 تیر 1386, 15:47 عصر
خب ... منم اینجوری بگم : خیلی خیلی قضیه رو پیچوندی...!

ForwardOnly که میگیم یعنی شما رکوردهای (سطرهای بانک اطلاعاتی) رو می تونی یک طرفه به جلو بری نه ستونها ...! با ستونها هیچ مشکلی نداری!

مشکلت از یه جای دیگه است ... (راستی این Response.write ها رو هم خیلی قاطی کردی! منظورت همینه که من پایین نوشتم یا یه چیز دیگه است؟!)


Response.Write RSproject("p_company") & RSproject("p_tel") & RSproject("p_company")

یه راه بی نمک برای ماست مالی مشکلت اینه که توی سطر اول که به قول خودت اطلاعاتت رو داره درست نشون میده به جای اینکه اونو چاپ کنی بریزیش توی یه متغیر و هر جا به اطلاعات این فیلد نیاز داشتی از اون استفاده کنی :چشمک:

rezamicro
چهارشنبه 06 تیر 1386, 13:07 عصر
دوستان عزیز فقط در مورد روش تغییر CursorType در متد Execute تبادل نظر نمایید