• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

error: Index (zero based) must be greater than or equal to zero and less than the siz

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
سلام به همه دوستان
من یک فرم دارم که در اون فیلدها ی خبر هر کدوم در قالب یک چک باکس ظاهر می شوند (که البته در قسمت اچ تی ام ال از چک باکس لیست استفاده شده )
من می خوام با اجرا شدن Delete_click خبرهایی که انتخاب شده اند از دیتا بیس حذف شوند برای این کار کد زیر را نوشته ام ولی متاسفانه با این خطا مواجه می شوم :​
Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
Sub Delete_click(s As Object, e As EventArgs)
Dim ConNews As OleDbConnection
Dim StrDelete AS String
Dim CmdDelete AS OleDbCommand
Dim IntDeleteCount As Integer
Dim itmnews

ConNews =New OleDbConnection("PROVIDER=MICROSOFT.jet.OLEDB.4.0;DATA source=C:\inetpub\wwwroot\website\web-data.mdb")
For Each itmnews in chkltitles.Items
If chkltitles.Items(i).Selected Then
StrDelete="Delete From News where total=@total"
CmdDelete=New OleDbCommand(StrDelete,ConNews)
CmdDelete.parameters.Add("@total", chklTitles.selecteditem)
()ConNews.Open
()cmdDelete.ExecuteNonQuery
End If
Next
()ConNews.Close
End Sub​
[/RIGHT]
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
کدام خط این تکه برنامه شما خطا می دهد . من تو گوگل سرچ کردم . نتایج مشکل در رابطه با اجرای Command ها بر روی دیتابیس می باشد . اط طرفی هر چی فکر می کنم می بینم هیچ ربطی به هم ندارند این دو مسئله . لطف کنید بگوئید از کدام خط خطا میگیرد.
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
Server Error in '/website/cpanel' Application.
--------------------------------------------------------------------------------

Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Index (zero based) must be greater than or equal to zero and less than the size of the argument list.

Source Error:


Line 44: CmdDelete.parameters.Add("@total", chklTitles.selecteditem)
Line 45: ()ConNews.Open
Line 46: ()cmdDelete.ExecuteNonQuery
Line 47: ()conNews.Close
Line 48: i=i+1


 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
فکر کنم متوجه شدم مشکل از کجاست .

پارامتری که شما به Command اضافه می کنید و یک مقدار هم بهش می دید مشکل را داره ایجاد می کنه . مشکل اینجاست که در یکی از مراحل اجرای این حلقه (احتمالا در همون اولین بار) پارامتر مقدار ندارد (null) و این خطا در زمان اجرا ظاهر می شود . برنامه را Trace کنید و در هر بار اجرای حلقه مقدار آن چک باکس انتخاب شده را که به عنوان مقدار پارامتر هست را چک کنید در یکی از این چک باکس ها (فکر کنم اولی هست) چک باکس مقداری ندارد .

http://www.vbforums.com/showthread.php?t=257136
و

http://www.geekpedia.com/Question57...-less-than-the-size-of-the-argument-list.html
رو حتما مطالعه کنید .
موفق باشید.
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
از اینکه وقت می گذارید بسیار سپاسگذارم
راستش مشکل اصلی من این هست که نمی دونم چطور باید به هر چک باکس مقدار بدم چون در واقع من چک باکس ها رو به شکل زیر مقدار دهی کردم نمی دونم چطور باید جداگانه به هر کدوم از اونها مقدار داد و یا اینکه چطور میشه در جلوی هر کدوم از اونها یک لینک مجزا قرار داد​
sub page_load
if Not IspostBack Then
Dim ConNews As OleDbConnection
Dim CmdSelectNews As OleDbCommand
Dim dtrNews As OleDbDataReader
Dim i As integer

ConNews=New OleDbConnection("PROVIDER=MICROSOFT.jet.OLEDB.4.0;DATA source=C:\inetpub\wwwroot\website\web-data.mdb")
conNews.Open()
CmdSelectNews=New OleDbCommand ("Select * From News",ConNews)
dtrNews=CmdSelectNews.ExecuteReader()
chkltitles.Datasource=dtrNews
chkltitles.DataTextField="total"
chklTitles.DataBind()
dtrNews.Close()
conNews.Close()
End If
End Sub
من از طریق این مدل مقدار دهی می توانم به اهدافم برسم یا اینکه باید اصلا به شیوه دیگری چک باکس ها را مقدار دهی کنم؟
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
سلام
من روش مقدار دهی چک باکس ها رو به روش زیر تغییر دادم ولی حالا دیگه اصلا چک باکسی را در اجرا مشاهده نمی کنم که بخوام حذفش کنم

راستی در روش قبلی من هر چک باکسی رو که انتخاب می کنم باز همون پیغام خطا رو می ده منظورم اینه که حلقه فور رو برداشتم و برنامه رو برای تک تک چک باکس ها تست کردم ولی بازم همون پیغام رو میده​
sub page_load
if Not IspostBack Then
Dim ConNews As OleDbConnection
Dim CmdSelectNews As OleDbCommand
Dim dtrNews As OleDbDataReader
Dim i As integer

ConNews=New OleDbConnection("PROVIDER=MICROSOFT.jet.OLEDB.4.0;DATA source=C:\inetpub\wwwroot\website\web-data.mdb")
conNews.Open()
CmdSelectNews=New OleDbCommand ("Select * From News",ConNews)
dtrNews=CmdSelectNews.ExecuteReader()
response.write("<asp:checkBoxList ID=chklTitles runat=Server>")
While dtrNews.Read
Response.Write("<asp:Listitem text="& dtrNews("total")&" selected=true />")
End While
Response.Write("</asp:checkboxList>")
dtrNews.Close()
conNews.Close()
End If
End Sub​
قسمتی که قرمز است را باید به چه شکلی تغییر دهم؟اصلا در این جا می توانم تکست را با دستور ای اس پی مقدار دهی کنم ؟
 

shimakh

کاربر تازه وارد
تاریخ عضویت
11 دسامبر 2006
نوشته‌ها
115
لایک‌ها
0
سلام
من شرمندم ولی باید بگم که نمی تونم کل پروژه را باز کنم و وقتی هم که webform1 رو باز می کنم فقط کد اچ تی ام ال رو می بینم و بقیه کدها رو نمی تونم ببینم
در اجرا هم فقط یک دکمه باتن می بینم که هیچ کار ی نمی کند...

در موقع باز کردن کل پروژه می گوید:
unable to open web project 'webapplication1' .the file path ' c:\inetpub\wwwroot\checkboxlist\webapplication1' dose not correspond to the url ' http://localhost:/webapplication1' . the two need to map to the same server location . http error 404: object not found​
 

mehdivk

Registered User
تاریخ عضویت
5 آپریل 2006
نوشته‌ها
319
لایک‌ها
0
حالا مهم نیست که پروژه را می تونید اجرا کنید یا نه ، سورس برنامه را ببینید کلا 5 خط کد نوشتم همین:blink:
 
بالا