PDA

View Full Version : ریختن همزمان اطلاعات در دو جدول



ly.comeng
دوشنبه 29 مهر 1387, 16:45 عصر
سلام

من 2 جدول دارم و برای هر کدام یک فرم جداگانه طراحی کردم

میخوام موقع ذخیره اطلاعات فرم 1 ، فیلد های مشترک بین جدول 1 و 2 همزمان در جدول 2 هم ذخیره بشه...
لطفا بفرمایین چطور؟

baran_mehr
دوشنبه 29 مهر 1387, 21:00 عصر
خیلی ساده میتونی این کار رو انجام بدی با استفاده از دستور Insert
دوبار از دستور insert استفاده کن و فیلدهایی که میخوای رو مشخص کن.
اگر نیاز به کمک داشتی بگو. شاد باشی گلم

ly.comeng
سه شنبه 30 مهر 1387, 19:00 عصر
خیلی ساده میتونی این کار رو انجام بدی با استفاده از دستور Insert
دوبار از دستور insert استفاده کن و فیلدهایی که میخوای رو مشخص کن.
اگر نیاز به کمک داشتی بگو. شاد باشی گلم


ممنونم،البته من مبدونم با insert باید درج کرد!
من نمیدونم چطور؟میدونم باید با sql command نوشت.اما دقیقا نمیدونم!

baran_mehr
سه شنبه 30 مهر 1387, 20:29 عصر
سلام گلم.
این تاپیک رو نگاه کن تا اخر نحوه استفاده از کد رو گفتم و مثال زدم:
ورود و نمایش اطلاعات (http://barnamenevis.org/forum/showthread.php?t=126683)

ly.comeng
چهارشنبه 01 آبان 1387, 11:31 صبح
سلام گلم.
این تاپیک رو نگاه کن تا اخر نحوه استفاده از کد رو گفتم و مثال زدم:
ورود و نمایش اطلاعات (http://barnamenevis.org/forum/showthread.php?t=126683)

ممنونم
عالی بود
من اینطور نوشتم


If chk_ranande.Checked = True Then
Try
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
Dim cmd As New SqlCommand
With cmd
.Connection = cn
.CommandType = CommandType.Text
.CommandText = ("insert into [ranande]([code_melli],[name],[family],[pedar_name],[shenasname_no],[hesab_no]) VALUES '" & txt_code.Text & "','" & txt_name.Text & "','" & txt_fam.Text & "','" & txt_pedar.Text & "','" & txt_sh.Text & "','" & txt_hesab.Text & "'")
.ExecuteNonQuery()
End With
Catch ex As Exception
MessageBox.Show(ex.Message & ex.Source & ex.StackTrace)

Finally
cn.Close()


End Try
End If



اجرا میشه،در جدول اصلی هم اضافه میشه اما در جدول راننده نه و error داره

روی این خط
ExecuteNonQuery()

و میگه incorect syntax near ' 999' که مربوط میشه به کد ملی و '" & txt_code.Text & "'

لطفا راهنمایی کنین

naeeme
چهارشنبه 01 آبان 1387, 11:55 صبح
نحوه صحیح نگارش دستور Insert:


INSERT INTO your_table_name(list_of_field) VALUES (list_of_value)

------------
تصور می کنم طراحی جدول‌هاتون ایراد داره که شما می خواین در 2 جدول همزمان درج انجام بدین.

eli_joon
چهارشنبه 01 آبان 1387, 12:30 عصر
With cmd
.Connection = cn
.CommandType = CommandType.Text
.CommandText = ("insert into [ranande]([code_melli],[name],[family],[pedar_name],[shenasname_no],[hesab_no]) VALUES '" & txt_code.Text & "','" & txt_name.Text & "','" & txt_fam.Text & "','" & txt_pedar.Text & "','" & txt_sh.Text & "','" & txt_hesab.Text & "'")
.ExecuteNonQuery()
EndWith




سلام دوست من .
شما مطمئنید که کد ملی رو به صورت string تعریف کردی . منظورم قسمتیه که سبزش کردم

baran_mehr
چهارشنبه 01 آبان 1387, 12:39 عصر
سلام خوبی گلم.
فکر میکنم همون چیزی باشه که eli_joon گفتن.یعنی احتمالا تو جدولت نوع فیلد شماره ملی از نوع عددی هست.الگر اینطوره علامت ' رو از دوطرف شئ textbox خودت بر دار.
راستی eli_joon جونم کدهاتو تو تگ کد( # ) بزار.ممنون گلم

ly.comeng
چهارشنبه 01 آبان 1387, 13:41 عصر
سلام خوبی گلم.
فکر میکنم همون چیزی باشه که eli_joon گفتن.یعنی احتمالا تو جدولت نوع فیلد شماره ملی از نوع عددی هست.الگر اینطوره علامت ' رو از دوطرف شئ textbox خودت بر دار.
راستی eli_joon جونم کدهاتو تو تگ کد( # ) بزار.ممنون گلم


مشکلم حل شد!یک ( کم بود


If chk_ranande.Checked = TrueThen
Try
If cn.State = ConnectionState.Closed Then
cn.Open()
EndIf
Dim cmd AsNew SqlCommand
With cmd
.Connection = cn
.CommandType = CommandType.Text
.CommandText = ("insert into [ranande]([code_melli],[name],[family],[pedar_name],[shenasname_no],[hesab_no]) VALUES ('" & txt_code.Text & "','" & txt_name.Text & "','" & txt_fam.Text & "','" & txt_pedar.Text & "','" & txt_sh.Text & "','" & txt_hesab.Text & "')")
.ExecuteNonQuery()
EndWith
Catch ex As Exception
MessageBox.Show(ex.Message & ex.Source & ex.StackTrace)

Finally
cn.Close()


EndTry
EndIf

naeeme
چهارشنبه 01 آبان 1387, 13:50 عصر
دستورتون به طور کلی غلطه!!! چون ما توی دستور INSERT بخش WHERE نداریم!
اون ایرادی هم که عزیزمون! VS نازنین از شما میگیره به خاطر نذاشتن " هست.

اگر تمایل دارین که به کد درست برسین بهتره درباره دستورات sql( زبان sql) بیشتر مطالعه کنین.

baran_mehr
چهارشنبه 01 آبان 1387, 22:15 عصر
سلام گلم. همونجوری که دوستمون گفتن تو دستور Isert نمیتونید از where استفاده کنید.
میشه بگید میخواهید چیکار کنید که نیاز به گذاشتن where دارید؟؟
اگه بگید شاید دوستان بتونن کمکی کنند.

baran_mehr
چهارشنبه 01 آبان 1387, 22:24 عصر
فکر کنم شما میخواین اول کد ملی را برسی کنید و بعد عمل insert را انجام بدید.
عزیز اول باید دستور Select را با Where استفاده کنید و سپس بر اساس خروجی آن عمل Insert را انجام بدید.
اگه بگید چیکار میخواید کنید خیلی بهتر میشه راهنمایی کرد.

ly.comeng
یک شنبه 05 آبان 1387, 00:42 صبح
فکر کنم شما میخواین اول کد ملی را برسی کنید و بعد عمل insert را انجام بدید.
عزیز اول باید دستور Select را با Where استفاده کنید و سپس بر اساس خروجی آن عمل Insert را انجام بدید.
اگه بگید چیکار میخواید کنید خیلی بهتر میشه راهنمایی کرد.

الان میخوام بعد از اینکه اطلاعات در جدول دوم هم درج شد موقع ویرایش بعد از انجام ویرایش برای ذخیره مجدد کد ملی رو بگیره یعنی مقایسه کنه و اطلاعات جدید رو آپدیت کنه که کد ملی که pk هست رو 2بار نخواد بریزه در جدول.

naeeme
یک شنبه 05 آبان 1387, 09:15 صبح
من که نفهمیدم!
ما یه عمل Insert داریم که اطلاعات رو در جدول ذخیره می کنیم و یه عمل Update داریم که اطلاعات موجود رو ویرایش می کنیم. برای ویرایش یه اطلاع خاص در دستور Update یه قسمت where داریم.
حالا اینجا ذخیره مجدد چه معنیی میده؟؟

الان میخوام بعد از اینکه اطلاعات در جدول دوم هم درج شد موقع ویرایش بعد از انجام ویرایش برای ذخیره مجدد کد ملی رو بگیره یعنی مقایسه کنه و اطلاعات جدید رو آپدیت کنه که کد ملی که pk هست رو 2بار نخواد بریزه در جدول.

baran_mehr
یک شنبه 05 آبان 1387, 12:08 عصر
ly.comeng جان میشه واضح تر بگید. خیلی نامفهمومه؟؟؟:متفکر:
اگه میخواین کد ملی رو دوبار بگیر که مطمئن بشید درست وارد کردید یا نه نیازی نداره که تو جدول وارد کنید و دوباره کد رو بگیردی و ویرایش کنید:متفکر:

ly.comeng
یک شنبه 05 آبان 1387, 18:55 عصر
من که نفهمیدم!
ما یه عمل Insert داریم که اطلاعات رو در جدول ذخیره می کنیم و یه عمل Update داریم که اطلاعات موجود رو ویرایش می کنیم. برای ویرایش یه اطلاع خاص در دستور Update یه قسمت where داریم.
حالا اینجا ذخیره مجدد چه معنیی میده؟؟

ببینین من عمل update رو همراه با where لازم دارم.

حالا بر کردیم به قبل،اولین سوالمو یادتونه که میخواستم همزمان در 2 جدول insert کنه؟حالا من میخوام در هر دو هم update کنه.کد update که منظور همون ویرایش هست رو واسه جدول اولی(مالک) که ازش اطلاعات در دومی درج میشه درست کار میکنه،اما واسه جدول دومم(راننده) دستور آپدیت بلد نیستم!

کد کامل ای رو در کلید ذخیره نوشتم اینجا میذارم:


If edit = False Then
Dim dr As DataRow
dr = ds.Tables("malek").NewRow
With dr
.Item(0) = txt_code.Text
.Item(1) = txt_name.Text
.Item(2) = txt_fam.Text
.Item(3) = txt_hesab.Text
.Item(4) = txt_sh.Text
.Item(5) = txt_pedar.Text
.Item(6) = txt_sodor.Text
.Item(7) = txt_adres.Text
.Item(8) = chk_ranande.Checked
.Item(9) = cmb_jaygah.SelectedValue


End With
ds.Tables("malek").Rows.Add(dr)
da.Update(ds, "malek")

ds.Tables("view_malek_jaygah").Clear()
da_view.Fill(ds, "view_malek_jaygah")

If chk_ranande.Checked = True Then
Try
If cn.State = ConnectionState.Closed Then
cn.Open()
End If
Dim cmd As New SqlCommand
With cmd
.Connection = cn
.CommandType = CommandType.Text
.CommandText = ("insert into [ranande]([code_melli],[name],[family],[pedar_name],[shenasname_no],[hesab_no]) VALUES ('" & txt_code.Text & "','" & txt_name.Text & "','" & txt_fam.Text & "','" & txt_pedar.Text & "','" & txt_sh.Text & "','" & txt_hesab.Text & "')")
.ExecuteNonQuery()
End With
Catch ex As Exception
MessageBox.Show(ex.Message & ex.Source & ex.StackTrace)

Finally
cn.Close()


End Try
End If


Else 'edit
With ds.Tables("malek").Rows(DataGridView1.CurrentRow.Index)
.BeginEdit()
.Item(0) = txt_code.Text
.Item(1) = txt_name.Text
.Item(2) = txt_fam.Text
.Item(3) = txt_hesab.Text
.Item(4) = txt_sh.Text
.Item(5) = txt_pedar.Text
.Item(6) = txt_sodor.Text
.Item(7) = txt_adres.Text
.Item(8) = chk_ranande.Checked
.Item(9) = cmb_jaygah.SelectedValue
.EndEdit()
End With
da.Update(ds, "malek")
ds.Tables("view_malek_jaygah").Clear()
da_view.Fill(ds, "view_malek_jaygah")
End If
txt_code.Text = ""
txt_name.Text = ""
txt_fam.Text = ""
txt_hesab.Text = ""
txt_sh.Text = ""
txt_pedar.Text = ""
txt_sodor.Text = ""
txt_adres.Text = ""
chk_ranande.Text = ""
cmb_jaygah.Text = " "
cmd_add.Enabled = True
cmd_save.Enabled = False
cmd_del.Enabled = False
cmd_edit.Enabled = False
cmd_undo.Enabled = False



امیدوارم منطورمو رسونده باشم

ly.comeng
یک شنبه 05 آبان 1387, 19:00 عصر
ly.comeng جان میشه واضح تر بگید. خیلی نامفهمومه؟؟؟:متفکر:
اگه میخواین کد ملی رو دوبار بگیر که مطمئن بشید درست وارد کردید یا نه نیازی نداره که تو جدول وارد کنید و دوباره کد رو بگیردی و ویرایش کنید:متفکر:


یک توضیح دیگه که باید بدم راجع به منطور اصلیم اینه که code_melli ، pk هست و من نمیخوام 2باره بگیره میخوام شرط where جایی باشه که code_melli هست.
مثلا
update ranande ( فیلد هایی که در اون با کدی که نوشتم درج میشه)

([code_melli],[name],[family],[pedar_name],[shenasname_no],[hesab_no]) VALUES ('" & txt_code.Text & "','" & txt_name.Text & "','" & txt_fam.Text & "','" & txt_pedar.Text & "','" & txt_sh.Text & "','" & txt_hesab.Text & "')")


where code_melli='

اما خوب کد درست رو بلد نیستم!!!

baran_mehr
یک شنبه 05 آبان 1387, 20:10 عصر
سلام ly.comeng جون.خوبی؟
عزیز دلم خوب تو update هم میتونی دستور Where رو بکار ببری. حتی میتونی به شرط اون یک دستور select رو هم بدی.

update table_name
set(name='ali')
where(name='reza')
و اگر بخوای دستور select رو هم اضافه کنی :

update table1
set(تغییرات)
where(id=select id
from table2
where(name='reza'))
ly.comeng جان اگر این قسمت از سوالت رو تو بخش مثلا اسکیوال میپرسیدی خیلی سریعتر به جواب میرسیدی گلم.
شاد باشی

ly.comeng
دوشنبه 06 آبان 1387, 01:36 صبح
سلام ly.comeng جون.خوبی؟
عزیز دلم خوب تو update هم میتونی دستور Where رو بکار ببری. حتی میتونی به شرط اون یک دستور select رو هم بدی.

update table_name
set(name='ali')
where(name='reza')
و اگر بخوای دستور select رو هم اضافه کنی :

update table1
set(تغییرات)
where(id=select id
from table2
where(name='reza'))
ly.comeng جان اگر این قسمت از سوالت رو تو بخش مثلا اسکیوال میپرسیدی خیلی سریعتر به جواب میرسیدی گلم.
شاد باشی



بسیار ممنونم از شما
مشکلم حل شد