PDA

View Full Version : با VB.NET برنامه ای نوشتم که دو تا مشکل توش دارم



سارا_ر
چهارشنبه 06 تیر 1386, 11:12 صبح
وقتی فرم جستجو رو باز می کنم فقط یک بار می تونم موردی رو جستجو کنم برای جستجوی بیشتر خطا می گیره :عصبانی++: برای ویرایش رکورد هم مشکل دارم ممنون می شم اگر کسی بتونه کمک کنه:افسرده:

eyes_shut_number1
چهارشنبه 06 تیر 1386, 11:25 صبح
کدتو مینویسی دوست عزیز؟

سارا_ر
چهارشنبه 06 تیر 1386, 17:59 عصر
نمی شه کدها قاطی پاطی می آد می شه شما فرض کنی من یه جدول ساده به نام student دارم که دارای فیلدهای شماره پرسنلی,نام, نام خانوادگی و شماره تلفن و آدرس باشه sqlsearch رشته تقاضا و strcon رشته اتصالمه می تونید با این مشخصات کدی بنویسید که مثلا با شماره پرسنلی جستجو کنه بیشتر از یک بار و بتونه رکوردها رو هم ویرایش کنه؟ ممنون می شم

azmoodeh
چهارشنبه 06 تیر 1386, 18:26 عصر
دوست عزیز فکر کنم بهتره یه راهی واسه ارسال کدهات پیدا کنی ، چون هر چی هم توضیح بدی نمیشه دقیق فهمید ایراد از کجاست !!

موفق باشید

سارا_ر
چهارشنبه 06 تیر 1386, 19:21 عصر
Dim p, result As Integer
Dim sqlsearch As String
Dim ds As New DataSet"strCon = "INITIAL CATALOG=pdb;data source=localhost;integrated security=SSPI strSql = "select * from report



(con = New SqlConnection(strCon

con.Open ()
result=MsgBox

("مایل به جستجو براساس شماره نامه می باشید؟", MsgBoxStyle.YesNo+ MsgBoxStyle.Question)


If (result = 6) Then
p = InputBox("شماره نامه مورد نظر را وارد کنید")


If (isvalid(p)) Then


sqlsearch = "select * from report where eid=" & p
Dim da As New SqlDataAdapter(sqlsearch, con)
(" da.Fill(ds, "report
txteid.DataBindings.Add(New Binding("text", ds, "report.eid"))
txtpid.DataBindings.Add(New Binding("text", ds, "report.pid"))
txtsv.DataBindings.Add(New Binding("text", ds, "report.sv"))
txtf.DataBindings.Add(New Binding("text", ds, "report.f"))
txtea.DataBindings.Add(New Binding("text", ds, "report.ea"))
txtlyear.DataBindings.Add(New Binding("text", ds, "report.lyear"))
con.Close()
ElseIf (isvalid(p)) = False Then
MsgBox("شماره نامه اشتباه وارد شده یا چنین نامه ای موجود نیست")

End If




این کدی که توی رویداد کلیک دکمه جستجو نوشتم تازه عضو اینجا شدم و هنوز درست نمی تونم کدا رو منتقل کنم پرانتزا جابجاست اما ایراد از اونا نیست اگر از این کدها مشکل معلوم می شه ممنون می شم کمک کنید امیدوارم بتونید ایرادشو پیدا کنید

ghafoori
چهارشنبه 06 تیر 1386, 21:17 عصر
دوست عزیز فکر کنم برای این باشد که شما هربار کنترل ها دوباره Bind می کنید باشد

Microsoft.net
چهارشنبه 06 تیر 1386, 21:19 عصر
خوب مشخصه که خطا میده این کد ! شما یک بار که کانکشن رو باز کردی دیگه نمیتونی دوباره بازش کنی یا مقدار دیگه ای بهش بدی ، بار اول درست کار میکنه ولی بار دوم نه ، چک کن اگه باز باشه دوباره بازش نکنی

__H2__
پنج شنبه 07 تیر 1386, 16:06 عصر
سلام
ایراد که ...
همانطور که کاربر Microsoft.net (http://www.barnamenevis.org/forum/member.php?u=4315) گفتند، شما Connection را نبستید.
هر بار Binding را انجام میدهید!
dataset را خالی نمیکنید. و در صورت تعریف کلید این هم باعث خطا میشود.

البته شاید بد هم نباشد هر بار کل فرم را ببندید و برای سرچ جدید از نو new کنید!

nasseritemp
یک شنبه 21 مرداد 1386, 13:56 عصر
سلام. این جدولو تو SQL داخل دیتابیس Search درست کنید و بعد از دانلود فایل ضمیمه, اونو اجرا کنید.
CREATE TABLE [dbo].[Students](
[st_id] [nvarchar](10) NOT NULL,
[st_name] [nvarchar](50) NULL,
[st_tel] [nvarchar](15) NULL,
[st_add] [nvarchar](200) NULL )

MH2538
دوشنبه 22 مرداد 1386, 06:34 صبح
سلام
اول خطای برنامه ات : قبل از Bind کردن حتماً باید Bindهای قبلی رو پاک کنی


txteid.DataBindings.Clear();

اینکار رو باید برای تک تک کنترل هایی که بهشون Bind کردی انجام بدی.(البته استثناهایی هم وجود داره).
دوم :‌بهینه سازی کد:
با وجود ConnectionPooling بازهم دلیلی وجود نداره که شما هر دفعه یک کانکشن جدید new کنید.ضمن اینکه من تو کدتون جایی هم ندیدم که اون رو Close کنید.
در اکثر برنامه‌ها (حداقل تا اونجایی که من سروکار داشتم) یک کانکشن در ابتدای برنامه ایجاد می شود (ولی باز نمی شود تا زمان رسیدن اولین درخواستی که نیاز به باز بودن کانکشن داشته باشد) و سعی می شود از همین کانکشن تا انتهای برنامه استفاده شود ور در انتها نیز بسته شود.
در بدترین شرایط، به منظور باز نگه نداشتن دیتابیس، تنها کانکشن Close شده و مجدداً در زمان نیاز بعدی باز می شود ولی New نمی شود.