PDA

View Full Version : درج همزمان در دو جدول(فوري)



f_safarpour
یک شنبه 27 فروردین 1391, 23:49 عصر
سلام
2تاجدول دارم به نام loginو personells در جدول loginيك فيلدusername دارم كه به عنوان كليد اصلي هستش و اين فيلد در جدول personlls هم كليداصلي و هم كليد خارجي هست.
چه طوري ميشه همزمان وقتي از طريق فرم مربوط به جدول personells فيلدusername رو ذخيره ميكنم در جدولlogin هم ثبت بشه؟
يه data set واسه فرم personellگذاشتم بايد يه dataset ديگه مربوط به جدول login هم بزارم؟
لطفا كمكم كنين. اصلا نميدونم چيكار بايد بكنم.

mgh64120
دوشنبه 28 فروردین 1391, 01:08 صبح
سلام دوست عزيز
من دقيق متوجه منظور شما نشدم ولي يك نمونه كد براي درج همزمان اطلاعات در دو جدول مجزا براتون ميزارم.
ابتدا در قسمت اعلان


Imports System.Data.SqlClient

و سپس ...


Dim Trans As SqlTransaction
Using Con As New SqlConnection("رشته اتصال")
Using Cmd As New SqlCommand()
Try
If Con.State = ConnectionState.Closed Then Con.Open()
Cmd.Connection = Con
Trans = Con.BeginTransaction
Cmd.Transaction = Trans
'
Cmd.CommandText = "INSERT INTO Login VALUES(@Username);"
Cmd.CommandText += "INSERT INTO personells VALUES(@Username,@...,@...,...)"
Cmd.CommandType = CommandType.Text
Cmd.Parameters.AddWithValue("@Username", txtUserName.Text).SqlDbType = SqlDbType.NVarChar
'
Cmd.ExecuteNonQuery()
Trans.Commit()
'
Catch ex As SqlException
MessageBox.Show(ex.Message, "خطا در افزودن كاربر جديد", MessageBoxButtons.OK, MessageBoxIcon.Error)
Trans.Rollback()
End Try
End Using
End Using

موفق باشيد...

tabatabaeefar
دوشنبه 28 فروردین 1391, 11:24 صبح
سلام
به نظر من بهتره از تریگرها استفاده کنید.
میتونید کاری کنید که موقع اضافه شدن رکورد جدید به جدول اول، خود پایگاه داده رکورد مربوط به جدول دوم رو اضافه کنه.
موفق باشید.

f_safarpour
دوشنبه 28 فروردین 1391, 16:11 عصر
تريگر چي هست؟ اصلا نميدونم چي هست!؟

f_safarpour
دوشنبه 28 فروردین 1391, 16:19 عصر
SqlDataAdapter1.InsertCommand.Parameters.Item(0).V alue = Txtcode
من از اين كد براي درج در جدول personells استفاده مي كنم نمدونم الان براي درج تو جدول login چيكار كنم؟ اصلا كد شما رو متوجه نشدم. نميدونم منظورتون از رشته اتصال چي هست؟

tabatabaeefar
دوشنبه 28 فروردین 1391, 17:34 عصر
شما میتونید داخل خود پایگاه داده کد بنویسید.
میشه گفت تریگرها تکه کدهایی هستن که موقع اعمال تغییرات (درج، حذف یا به روزرسانی) روی جداول اجرا میشن.
شما میتونید یه دونه تریگر بسازید که موقع اضافه شدن رکورد جدید به جدول personells اجرا بشه.
کدی که توی این تریگر مینویسید باید به گونه ایی باشه رکورد مربوط به جدول login رو خودش اضافه کنه.
اگر دوست دارید مطالب بیشتر در مورد پایگاه داده بدونید به نظرم بهتره به تالار پایگاه داده مراجعه کنید.
توی اینترنت هم اگر بگردید خیلی مطلب در موردش هست.

ROSTAM2
دوشنبه 28 فروردین 1391, 17:43 عصر
دوست عزیز از این روشی که استفاده می کنی نمی تونی بهره کامل از ابزارهای Query در ویژوال استادیو ببری
پس از وارد کردن دیتا ست می تونی با استفاده از دیتا ست دیزاینر از ابزارهای Query استفاده کنی و توابع SQL رو همونجا بسازی حالا با توجه به این اوصاف می تونی تابعی بسازی که فقط به یک فیلد از یک جدول مقدار بدی ولی فکر کنم داری برای خودت دردسر درست می کنی اطلاعات کامل جدول دوم رو از کاربر بگیر اون یک فیلدی که با هم مطابقت داره رو هم به همراه اون ست کن