PDA

View Full Version : سوال: یک مشکل با database



arhnmn
جمعه 12 تیر 1388, 13:03 عصر
سلام دوستان.من یه مشکلی دارم ممنون میشم کمک کنید
در صفحه ی ثبت نام پروژم یه فیلدی دارم به اسم کلید رمز که کاربر باید خودش این عدد رو انتخاب کنه و وارد کنه.من می خوام که وقتی این کد تکراری بود یه پیغام بده و اون رو در دیتا بیس ذخیره نکنه در صورتی که الان این پیغام رو میده ولی عدد تکراری رو هم ذخیره میکنه



Dim SqlConnection2 As SqlConnection = New System.Data.SqlClient.SqlConnection(" ")
Protected WithEvents SqlCommand1 As System.Data.SqlClient.SqlCommand
SqlConnection2.Open()
SqlCommand1 = New SqlCommand(" select * from darjeagahi where agahiramz = '" + txtkelidramz.Text + " ' ")
SqlCommand1.Connection = SqlConnection2
SqlCommand1.CommandType = CommandType.Text
a = SqlCommand1.ExecuteReader
If a.HasRows = True Then
eror.visible = True
SqlConnection2.Close()
End If




این کدی که برای اینکه رمز تکراری بود پیغام نشون بده ولی همون جوری که گفتم پیغام نشون میده ولی رمز تکراری هم میره داخل دیتا بیس و پس از اون هر چند بار که برنامه اجرا بشه اون پیغام رو صفحه میمونه که اگر بخوام بره باید دستی تو دیتا بیسم تغییرش بدم.
دوستان ممنون میشم کسی لطف کنه وکمکم کنه

milade
جمعه 12 تیر 1388, 13:51 عصر
سلام .
خوب اینکه Select بود و بدون مشکل ، اما قسمت Insert رو هم بگزارید .

arhnmn
جمعه 12 تیر 1388, 14:29 عصر
ببینید قسمت insert هیچ مشکلی نداشت,یعنی تا قبل این من بدون توجه به اینکه امکان داره رمز تکراری وارد بشه برنامه رو اجرا میکردم هیچ مشکلی هم نداشت و خیلی کامل اطلاعات میرفت داخل دیتابیس ولی وقتی خواستم که رمز تکراری کسی وارد نکنه این قسمت در page_load اضافه کردم که دفعه ی اول پیغام رو نشون میده اگه تکراری باشه ولی رمز تکراری داخل دیتا بیس میره و از اون به بعدم هر چند بار که اجرا میکنم اون پیغام کلا" رو صفحه میمونه تا دستی من تو دیتابیس تغییرش بدم

hobab-theme
جمعه 12 تیر 1388, 14:47 عصر
خوب شما طبق همون دستور سلکتی که نوشتید داده وارد شده از کاربر رو دریافت میکنید
حالا باید با یه شرط (If) بررسی کنید ببینید که آیا این داده وارد شده قبلاً تو جدول بوده یا خیر
در ضمن فیلد مورد نظرتون رو هم تو بانک از نوع Primary Key قرار بدید بهتره

arhnmn
جمعه 12 تیر 1388, 16:50 عصر
دوست عزیز شما انقدر کمکم کردید که من شرمنده شدم.میشه یه نمونه کد که کار مشابهی انجام بده رو لطف کنین.
بازم از لطفهای شما ممنونم

arhnmn
شنبه 13 تیر 1388, 16:43 عصر
ببخشید من سئوالم این بود که (البته احتمالا" این سئوال برای خیلی از دوستان مبتدیانه باشه) مگه این if که من نوشتم همین کار رو نمی کنه؟؟؟

milade
شنبه 13 تیر 1388, 17:04 عصر
یه Exit Sub بنویس قبل از End if .

اگه نشد کل کد رو بنویس چون این قسمت مشکل نداره !

arhnmn
شنبه 13 تیر 1388, 18:12 عصر
از شما ممنونم.می خواستم کد رو برای شما ارسال کنم که متوجه اشکالم شدم,که من این کد جلوگیری از تکراری بودن رمز رو باید داخل همون دکمه ثبت می نوشتم,نه جای دیگه!!حالا این مشکلش حل شد که رمز تکراری داخل دیتا بیس نمیره ولی اون erroرو نشون نمیده فقط همین.

arhnmn
دوشنبه 15 تیر 1388, 13:10 عصر
سلام دوستان.من بازم با دیتابیس مشکل دارم,مشکلم این که اگر کسی خواست کلید رمزی که موقع ثبت نام انتخاب کرده رو بازیابی کنه تو یه صفحه ایی ازش ایمیل رو میگیره اگر چنین ایمیلی تو دیتابیس باشه کلید رمز رو نشون بده .الان کدی که نوشتم به درستی این کارو انجام میده فقط اسم ستون که تو جدولای دیتابیس هست رو هم نشون میده که من نمیخوام اینطور باشه یعنی می خوام فقط کلید رمز رو نشون بده و یه مشکل دیگه ایی که هست این که بعد از نشون دادن کلید رمز مربوط به اولین ایمیل اگر ایمیل دومی وارد کنیم کلید رمز قبلی هنوز تو صفحه هستش و پاک نشده.
ممنون میشم کمکم کنید



TextBox1.Text = LTrim(RTrim(TextBox1.Text))
SqlConnection1.Open()
SqlCommand1 = New SqlCommand("select agahiramz from darjeagahi where email='" + TextBox1.Text + "'")
SqlCommand1.Connection = SqlConnection1
SqlCommand1.CommandType = CommandType.Text
m = SqlCommand1.ExecuteReader
If m.HasRows = False Then
eror.Visible = True
SqlConnection1.Close()
Else

datagrid1.DataSource = m
datagrid1.DataBind()

SqlConnection1.Close()
End If

hobab-theme
دوشنبه 15 تیر 1388, 14:44 عصر
یه مشکل دیگه ایی که هست این که بعد از نشون دادن کلید رمز مربوط به اولین ایمیل اگر ایمیل دومی وارد کنیم کلید رمز قبلی هنوز تو صفحه هستش و پاک نشده.

یا EnabledViewStat لبلتون رو برابر False کنید یا از تو رویداد لود صفحتون مقدار لبل رو برابر "" قرار بدید

arhnmn
سه شنبه 16 تیر 1388, 17:31 عصر
سلام دوستان.من بازم با دیتابیس مشکل دارم,مشکلم این که اگر کسی خواست کلید رمزی که موقع ثبت نام انتخاب کرده رو بازیابی کنه تو یه صفحه ایی ازش ایمیل رو میگیره اگر چنین ایمیلی تو دیتابیس باشه کلید رمز رو نشون بده .الان کدی که نوشتم به درستی این کارو انجام میده فقط اسم ستون که تو جدولای دیتابیس هست رو هم نشون میده که من نمیخوام اینطور باشه یعنی می خوام فقط کلید رمز رو نشون بده



دوستان این قسمت سئوالم رو کسی جواب نمیده؟؟؟
در ضمن دوست عزیز hobab-them ازتون واقعا" ممنونم که به مشکلات کسانی که سئوال میپرسن جواب میدین.
ممنون

arhnmn
چهارشنبه 17 تیر 1388, 17:22 عصر
من سئوالم رو بازم میپرسم.من یه سری از ستونهای جداول دیتابیسم رو میخوام تو یه دیتاگرید نشون بدم ولی اسم ستونهایی که تو جدول دیتابیسم تعریف کردم هم میاد داخل دیتاگرید.چیکار کنم فقط خود رکورد بیاد و نه اسم ستونش؟؟
لطفا" کمکم کنید

arhnmn
چهارشنبه 17 تیر 1388, 21:25 عصر
دوستان لطفا" به این تایپیک نگاهی بندازید. خیلی وقت کم دارم واینم یک مشکل بزرگی هست برام.
لطفا" کمک کنید .کسی پیشنهادی نداره؟؟

hobab-theme
چهارشنبه 17 تیر 1388, 21:55 عصر
شما AutoGenerateColumns رو برابر False قرار دادی؟

milade
چهارشنبه 17 تیر 1388, 22:24 عصر
چیکار کنم فقط خود رکورد بیاد و نه اسم ستونش؟؟

ShowHeader="False"
( یا یه همچین چیزی .. ! )

arhnmn
چهارشنبه 17 تیر 1388, 23:34 عصر
AutoGenerateColumns رو برابر False قرار دادی؟



اینکارو کردم اصلا" رمزو نشون نمیده دیگه

arhnmn
چهارشنبه 17 تیر 1388, 23:36 عصر
این درست بود.ممنون

NIUSHA_KH
پنج شنبه 18 تیر 1388, 00:50 صبح
سلام
اینکه نام ستون رو نشون میده به این خاطر که از datagrid استفاده کردید.
اگر شما از هر component دیگه ای استفاده می کردید ، این مسئله پیش نمی اومد.
شما می تونید برای نشون دادن ایمیلی که تو جدول وجود داره از Lable,TextBox استفاده کنید و همونطور که دوستمون گفت در PageLode بنویسید(مثلا : ""=Lable1.text)

arhnmn
پنج شنبه 18 تیر 1388, 01:28 صبح
راستشو بگم متوجه نشدم منظورتون رو؟؟یعنی چی در page_ load بنویسم label1.text
البته با کمک دوستمون که گفته بود ShowHeader="False" مشکلم حل شد

ehsan*ehsan
پنج شنبه 18 تیر 1388, 02:01 صبح
سلام عزیز. من عضو جدید این سایت هستم. و پاسخ شما رو شاید فردا بدم. مرسی

arhnmn
چهارشنبه 24 تیر 1388, 17:28 عصر
سلام دوستان.با دیتابیس دچار مشکل اساسی شدم که ازش سر در نمیارم.

من چندتا تیبل دارم که نحوه relation اینها به این صورت که در هر 4 تیبل من یه ستون به اسم agahiid قرار دادم که هر 4 تا primaty key هستند در جدولهای خودشون و هر 4تا identity=yes هستش یعنی اینا از کاربر مقدار نمیگیرن بلکه خودشون پر میشن.حالا وقتی کاربر بخواد یه آگهی آپارتمان بزاره اطلاعات شخصی خود اگهی دهنده داخل تیبل darjeagahiمیره واطلاعات آپارتمان اون شخص داخل تیبل melk میره که قبلا"گفتم که اینا از طریق agahiid باهم relation دارند.این کدی که این کار رومیکنه:



SqlConnection1.Open()
SqlCommand2 = New SqlCommand("insert into darjeagahi (agahigroh,ostan,city,agahinoe,agahidahandename,em ail,tel,agahimahiyat,agahititr,agahimatn,agahighey mat,kelideramz) values(' " + drpgroheagahi.SelectedItem.ToString + " ' ,'" + ostan.SelectedItem.ToString + "','" + shahr.SelectedItem.ToString + "','" + rdbgroheagahi.SelectedItem.Value + " ' ,'" + txtnam.Text + " ', '" + txtpostel.Text + " ', '" + txttel.Text + " ' ,'" + rdbnoeagahi.SelectedItem.Value + "', ' " + txttitr.Text + "', ' " + txtareamatnagahi.Value + " ' ,'" + txtgheimat.Text + " ' ,' " + txtkelidramz.Text + " ' )")
SqlCommand2.Connection = SqlConnection1
SqlCommand2.CommandType = CommandType.Text
SqlCommand2.ExecuteNonQuery()
SqlConnection1.Close()
SqlConnection1.Open()
SqlCommand2 = New SqlCommand("insert into melk (agahimantaghe,khiaban,gheymaterahn,gheymateejare, masahat,tedadeotagh,tabaghe,asansor,telphon,balkon ,bargh,ab,shoomineh,parking,gaz) values(' " + txtmantaghe.Text + " ','" + txtkhiaban.Text + "','" + txtgheymatrahn.Text + " ' ,'" + txtgheymatejare.Text + "','" + txtmasahat.Text + "','" + txttedadotagh.Text + " ' ,'" + txttabaghe.Text + " ', '" + CheckBox1.Checked.ToString + " ', '" + CheckBox2.Checked.ToString + " ' ,'" + CheckBox3.Checked.ToString + "', ' " + CheckBox4.Checked.ToString + "', ' " + CheckBox5.Checked.ToString + " ' ,' " + CheckBox6.Checked.ToString + " ' ,' " + CheckBox7.Checked.ToString + " ',' " + CheckBox8.Checked.ToString + " ' )")
SqlCommand2.Connection = SqlConnection1
SqlCommand2.CommandType = CommandType.Text
SqlCommand2.ExecuteNonQuery()
SqlConnection1.Close()
SqlConnection1.Open()
SqlCommand2 = New SqlCommand(" select * from darjeagahi where kelideramz = '" + txtkelidramz.Text + " ' ")
SqlCommand2.Connection = SqlConnection1
SqlCommand2.CommandType = CommandType.Text
s = SqlCommand2.ExecuteReader
If s.HasRows = True Then
eror.Visible = True
SqlConnection1.Close()
End If




وقتی کاربر دکمه ثبت میزنه این erro رو میده که نمیدونم باید چیکار کنم



INSERT statement conflicted with COLUMN FOREIGN KEY constraint 'FK_melk_darjeagahi'. The conflict occurred in database 'hndatabas', table 'darjeagahi', column 'agahiid'.
The statement has been terminated.



لطفا" اگه کسی این مشکل رو میدونه کمک کنه.ممنون میشم