PDA

View Full Version : سوال: مشکل برزرگ در update حرفه ای ها کمک کنن



saman_itc
سه شنبه 24 اردیبهشت 1387, 12:08 عصر
معادل این دستور چیه؟


'ol_cm = New OleDbCommand("UPDATE A_Tabdil SET raft = false WHERE A_Tabdil.id_shali = Factor_F_T.id_shali ", ol_cn)
'ol_cm.ExecuteReader()

میشه تو شرط update این کارو کرد؟؟؟؟؟؟؟؟؟؟؟؟

Evil 69
سه شنبه 24 اردیبهشت 1387, 13:19 عصر
اره توي vb.net اين يك كاره خيلي ساده هستش شما مي توني يك كوئري توليد كني كه يك دستور update ( sql ) داخلش باشه بعد ديتا اداپتورتو با اون دستور fill كني البته براي اينكه يك شرط رو بتوني چك كني بايد از پارامتر هاي استفاد ه كني مثلا مي گي WHERE ID =I حالا مي ري توي پنجره تنظيمات ( سمت راست برنامه ) و اونجا در قسمت پارامتر يك پارامتر به نا م i اضافه مي كني همين و بس ( وقتي كه ادابتور رو با اون fill كني ميگه كه يك مقدار براي اون پارامتر بفرست )

kablayi
سه شنبه 24 اردیبهشت 1387, 15:48 عصر
معادل این دستور چیه؟


'ol_cm = New OleDbCommand("UPDATE A_Tabdil SET raft = false WHERE A_Tabdil.id_shali = Factor_F_T.id_shali ", ol_cn)
'ol_cm.ExecuteReader()

میشه تو شرط update این کارو کرد؟؟؟؟؟؟؟؟؟؟؟؟

سلام...
از ExecuteNonQuery به جای ExecuteReader استفاده کنید ... ایشالا که جواب میده ...

گمونم دستور Update مشکلی نداشته باشه ... :متفکر:

این قالب نوشتن آپدیته:

UPDATE TABLE "table_name"
SET ("column_1", "column_2") = ([new value 1], [new value 2])
WHERE {condition}


حالا میتونی اینجوری بنویسی ...


dim strsql as string
.
.
.
StrSql = "Update TABLE_NAME SET (NAME,TELL) = (@Name,@Tell) where ID='100' "
Dim cn As New OleDbConnection(ConStr)
Dim cmd As New OleDbCommand(StrSql, cn)
cmd.Parameters.Add("@name", txtname.Text)
cmd.Parameters.Add("@tell", txttell.Text)

cn.open()
cmd. ExecuteNonQuery()
cn.close()

saman_itc
چهارشنبه 25 اردیبهشت 1387, 00:33 صبح
اره توي vb.net اين يك كاره خيلي ساده هستش شما مي توني يك كوئري توليد كني كه يك دستور update ( sql ) داخلش باشه بعد ديتا اداپتورتو با اون دستور fill كني البته براي اينكه يك شرط رو بتوني چك كني بايد از پارامتر هاي استفاد ه كني مثلا مي گي WHERE ID =I حالا مي ري توي پنجره تنظيمات ( سمت راست برنامه ) و اونجا در قسمت پارامتر يك پارامتر به نا م i اضافه مي كني همين و بس ( وقتي كه ادابتور رو با اون fill كني ميگه كه يك مقدار براي اون پارامتر بفرست )
اگه میشه یه مثال بزنید

saman_itc
چهارشنبه 25 اردیبهشت 1387, 00:36 صبح
سلام...
از ExecuteNonQuery به جای ExecuteReader استفاده کنید ... ایشالا که جواب میده ...

من از اکسس استفاده می کنم
و کد شما خطا میده
اگه میشه بیشتر توضیح بدید

kablayi
چهارشنبه 25 اردیبهشت 1387, 01:40 صبح
فکر کنم خیلی واضح باشه ...
اون بالا نحوه اضافه کردن پارامتر به command رو نوشتم که چطوری بتونی مقداری رو که تو یه تکست باکس هست در Query استفاده و جایگزین کنی...
مثلا قصد داری رکورد ID=100 رو پیدا کنی و مقدار name و tell رو از تکست باکس روی فرم مربوط به اونا بخونی و در جدول UPDATE کنی ...
((البته میتونی جای 100 هم با استفاده از پارامتر هر چی خواستی بذاری...))

و هر وقت که خط cmd. ExecuteNonQuery اجرا شد Query با پارامترهای مربوطه مقداردهی شده ادغام شده و در جدول اعمال میشه ...

در ضمن اگر دقت کرده باشی از OLEdbcommand و OleDbConnection استفاده کردم یعنی دارم از اکسس استفاده میکنم ...
کد خودتو اینجوری نوشتم ... نمیدونم منظورتون همین بوده یا نه ...



Dim StrSql as string = "Update A_Tabdil SET raft = 'false' where A_Tabdil.id_shali = @Temp1"
Dim ol_cn As New OleDbConnection(ConStr)
Dim ol_cm As New OleDbCommand(StrSql, ol_cn)
cmd.Parameters.Add("@Temp1",Factor_F_T.id_shali)

ol_cn.open()
ol_cm. ExecuteNonQuery()
ol_cn.close()



ExecuteNonQuery زمانی استفاده میشه که بخوای در Query از UPDATE,INSERT و ... استفاده کنی و اگر در Query از SELECT استفاده کنی باید از Executereader استفاده کنی ...

فکر کنم کافی باشه ... :بامزه:
اگر سوال دیگه ای داشتی در خدمتیم ... :لبخندساده:
موفق باشی... :چشمک:

saman_itc
چهارشنبه 25 اردیبهشت 1387, 23:27 عصر
جدی؟
من UPDATE بلدم
من میخوام تو فرم لود اینو بنویسم

'ol_cm = New OleDbCommand("UPDATE A_Tabdil SET raft = false WHERE A_Tabdil.id_shali = Factor_F_T.id_shali ", ol_cn)

Factor_F_T.id_shali یه فیلده از یه جدول دیگه.
از زحمتت ممنونم ولی دقت کن

saman_itc
شنبه 28 اردیبهشت 1387, 09:15 صبح
دوستان تو update میشه شرط برابری دو فیلد از دو جدول مختلف قرار داد؟
مثل:UPDATE A_Tabdil SET raft = false WHERE A_Tabdil.id_shali = Factor_F_T.id_shali

Morteza_s
شنبه 28 اردیبهشت 1387, 16:31 عصر
شما برای این کار باید نام جدول ها و فیلد ها رو در کوئری دقیقآ مشخص کنید:


UPDATE Table1,Table2
SET Table1.name = "AAAAAA"
WHERE Table1.ID=Table2.ID

saman_itc
یک شنبه 29 اردیبهشت 1387, 17:25 عصر
شما برای این کار باید نام جدول ها و فیلد ها رو در کوئری دقیقآ مشخص کنید:


UPDATE Table1,Table2
SET Table1.name = "AAAAAA"
WHERE Table1.ID=Table2.ID

ما تو اینجا فقط داریم Table1 اپدیت میکنیم !!!!!!!!!!
فیلداشم دقیقا مشخصه

saman_itc
دوشنبه 30 اردیبهشت 1387, 12:43 عصر
تا حالا کسی به این مشکل بر نخورده؟

Morteza_s
شنبه 11 خرداد 1387, 17:33 عصر
ما تو اینجا فقط داریم Table1 اپدیت میکنیم !!!!!!!!!!
فیلداشم دقیقا مشخصه
اگه فیلد raft در هر دو جدول هست و می خواید هر دو رو آپدیت کنید، این کد رو امتحان کنید:


UPDATE A_Tabdil, Factor_F_T
SET A_Tabdil.raft=false,Factor_F_T.raft=false
WHERE A_Tabdil.id_shali = Factor_F_T.id_shali
امیدوارم منظورتون رو درست متوجه شده باشم.

r0ot$harp
شنبه 20 مهر 1387, 11:25 صبح
دیدم این تاپیک وجود دارد منم سوالم رو اینجا مطرح می کنم .


من در Update مشکل دارم .

این دستورات Update من هست :


Cmd = New OleDbCommand("UPDATE [Order] set [Name] = '" & TxtName.Text & "',[Age] = '" & TxtAge.Text & "',[Job] = '" & Job & "',[Date] = '" & TxtDate.Text & "',[Tel] = '" & TxtTel.Text & "',[OrderHistory] = '" & OrderHistory & "',[BecauseResort] = '" & TxtBecauseResort.Text & "',[HistoryIllness] = '" & HistoryIllness & "',[Result] = '" & TxtResult.Text & "',[Medicine] = '" & TxtMedicine.Text & "',[ResultVisit] = '" & TxtResultVisit.Text & "' WHERE [FileNumber] = '" & TxtFileNumber.Text & "'", Cn)

Cmd.ExecuteNonQuery()


همچین Error می ده :


No value given for one or more required parameters

به خط Cmd.ExecuteNonQuery() گیر میده .


و یه سوال می خوام بدونم چه جوری می تونم اطلاعات رو از بانک بخونم که اگر ارتباط بسته بود بتونه اطلاعات رو بگیره . من اطلاعات رو اینجوری می گیرم .



Cmd = New OleDbCommand("Select * from [Order] where [FileNumber] = " & Chr(34) & FileNumber & Chr(34), Cn)
DR = Cmd.ExecuteReader
DR.Read()


TxtName.Text = DR("Name")


باتشکر احسان

eli_joon
شنبه 20 مهر 1387, 12:34 عصر
دوستان تو update میشه شرط برابری دو فیلد از دو جدول مختلف قرار داد؟
مثل:UPDATE A_Tabdil SET raft = false WHERE A_Tabdil.id_shali = Factor_F_T.id_shali


بله که میشه ::لبخند:
اگه A_Tabdil جدول شماره 1 و factor_f_t جدول شماره 2 باشه آنگاه :


UPDATE A_Tabdil SET A_Tabdil.raft= false WHERE A_Tabdil.id_shali =Factor_F_T.id_shali
-------------------------------------------------------------مشکل اینجا بود-------------------------

salehbagheri
شنبه 20 مهر 1387, 12:37 عصر
دوست عزيز Sanaz13X!
اميدوارم كه صاحب تاپيك، از دست شما ناراحت نشه!

شما بجاي اينكه تمامي كدتون را در يك خط بنويسيد، از پارامترها استفاده كنيد! (همانند پست شماره 3 و 6 از Mr Kablayi در همين تاپيك)

r0ot$harp
شنبه 20 مهر 1387, 12:44 عصر
دوست عزيز Sanaz13X!
اميدوارم كه صاحب تاپيك، از دست شما ناراحت نشه!

شما بجاي اينكه تمامي كدتون را در يك خط بنويسيد، از پارامترها استفاده كنيد! (همانند پست شماره 3 و 6 از Mr Kablayi در همين تاپيك)

آیا نمی شه کاری کرد که از پارامتر استفاده نکنم و همه چی در کد SQL قرار گیرد ؟


این سوال هم جواب دهید .

و یه سوال می خوام بدونم چه جوری می تونم اطلاعات رو از بانک بخونم که اگر ارتباط بسته بود بتونه اطلاعات رو بگیره . من اطلاعات رو اینجوری می گیرم .



Cmd = New OleDbCommand("Select * from [Order] where [FileNumber] = " & Chr(34) & FileNumber & Chr(34), Cn)
DR = Cmd.ExecuteReader
DR.Read()


TxtName.Text = DR("Name")


باتشکر احسان

mc_laren
شنبه 20 مهر 1387, 14:20 عصر
به نام خدا
با سلام
این جواب دوستمان saman_itc می باشد.
البته شاید الان بدردشان نخوره ولی شاید برای دیگر دوستان مفید باشه.
update t1,t2 set raft=false where t1.f=t2.f
حالت کلی هم این می باشد که باید اسم هر جدولی که می خواهیم استفاده کنیم
رو در اول بیاوریم.
البته من این کد رو در اکسس امتحان کردم و در دات نت نه اون با شما.