View Full Version : انتقال اطلاعات بانک 1 به بانک شماره 2
مهدی سرتیپ
چهارشنبه 28 دی 1384, 16:15 عصر
با سلام خدمت دوستان عزیز و تبریک عید سعید غدیر خم
مشکلی داشتن و اون اینکه من یک بانکی ایجاد کرده ام که در دو کامپیوتر مجزا نصب شده و اطلاعاتی را راجع به پرونده افراد در داخل آن ثبت میکنند .
حال چطور میتوانم پرونده هایی رو که در سیستم شماره یک ریخته شده را در سیستم شماره دو کپی کنم بدون اینکه اطلاعات پرونده های وارد شده در سیستم شماره 2 از بین برود و یا بلعکس .
خلاصه بگویم بخواهم اطلاعات یکی از سیستم هایم را آپدیت کنم .
از لطفتان سپاسگذارم .
شاپرک
یک شنبه 02 بهمن 1384, 07:38 صبح
چرا این جداول رو لینک نکردی ؟
mRizvandi
یک شنبه 02 بهمن 1384, 08:08 صبح
سلام
در حالت خیلی ساده بهتر اینه که برنامه رو روی یک سیستم قرار بدی و هر دو ازش استفاده کنند.
:چشمک:
مهدی سرتیپ
دوشنبه 03 بهمن 1384, 09:03 صبح
دوستان عزیز از پاسخ های شما متشکرم
خدمت تان عرض کنم ، امکان لینک کردن و یا استفاده از یک سیستم تو سط دو کار بر نیست برای حل مشکل چه کنم ؟
باز هم متشکرم
mRizvandi
دوشنبه 03 بهمن 1384, 09:52 صبح
سلام
پس هر سری باید داده های هر کدوم رو به اون یکی بصورت دستی انتقال بدی
یا اینکه یک برنامه بنویسی و بر اساس یک فیلد آی دی فیلدهای جدید رو به بانک اضافه کنی
:چشمک:
مهدی سرتیپ
دوشنبه 03 بهمن 1384, 14:29 عصر
سلام
قربون دستت
من هم ، همین برنامه رو میخواهم .
mRizvandi
سه شنبه 04 بهمن 1384, 08:26 صبح
:چشمک: سلام
من یک برنامه نوشتم که با اسم فیلدها هیچ کاری نداره لی خوب مطابق با پروژه ات باید بعضی قسمتها رو تغییر بدی
این برنامه نمونه رکوردهای یک جدول رو در جدول دیگری کپی می کند
Option Compare Database
Private Sub Command0_Click()
Dim dbSource As Database
Dim dbTarget As Database
Dim rstSource As Recordset
Dim rstTarget As Recordset
Dim lLastID As Long
Dim fldItem As Field
Dim lAddRecord As Long
On Error GoTo ErrHandler
Set dbSource = CurrentDb()
Set rstSource = dbSource.OpenRecordset("SELECT * FROM tblSource ORDER BY ID", dbOpenSnapshot)
Set dbTarget = CurrentDb()
Set rstTarget = dbTarget.OpenRecordset("SELECT MAX(ID) AS MaxId FROM tblTarget", dbOpenSnapshot)
If IsNull(rstTarget!MaxId) Then
lLastID = 0
Else
lLastID = rstTarget!MaxId
End If
rstTarget.Close
Set rstTarget = dbTarget.OpenRecordset("tblTarget")
If rstSource.BOF And rstSource.EOF Then
MsgBox "Source is empty", vbCritical
Exit Sub
End If
rstSource.MoveLast
rstSource.MoveFirst
rstSource.Move (lLastID)
For i = lLastID + 1 To rstSource.RecordCount
rstTarget.AddNew
For Each fldItem In rstSource.Fields
rstTarget.Fields(fldItem.Name) = fldItem.Value
Next
rstTarget.Update
rstSource.MoveNext
lAddRecord = lAddRecord + 1
Next
MsgBox lAddRecord & "Added to target table", vbInformation
Exit Sub
ErrHandler:
If lAddRecord > 0 Then
MsgBox lAddRecord & "Added to target table successfully" & vbCrLf & "Error ocured", vbInformation
Else
MsgBox "Error on proccess", vbCritical
End If
End Sub
:چشمک:
مهدی سرتیپ
چهارشنبه 05 بهمن 1384, 13:44 عصر
جناب mRizvandi عزیز
با سلام و تشکر از ارسال کد برنامه فوق .
خدمتتان عرض کنم که من تازه دستورات کد نویسی را دارم یاد میگیرم .
چنانچه برایتان امکان دارد کمی در رابطه با دستورات فوق توضیحی عنایت بفرمائید .
قبلاً از لطف شما متشکرم.
mRizvandi
چهارشنبه 05 بهمن 1384, 15:02 عصر
سلام
این هم توضیح امیدوارم مفید باشه
Option Compare Database
Private Sub Command0_Click()
'تعریف متغیرهای لازم
Dim dbSource As Database
Dim dbTarget As Database
Dim rstSource As Recordset
Dim rstTarget As Recordset
Dim lLastID As Long
Dim fldItem As Field
Dim lAddRecord As Long
'در صورت بروز خطا پرش به آدرس تعیین شده
On Error GoTo ErrHandler
'مقداردهی متغیرها به دیتابیس جاری و باز کردن جدول برای بدست آوردن آخرین آی دی
Set dbSource = CurrentDb()
Set rstSource = dbSource.OpenRecordset("SELECT * FROM tblSource ORDER BY ID"
, dbOpenSnapshot)
'مقداردهی متغیرها به دیتابیس جاری و باز کردن جدول برای بدست آوردن آخرین آی دی
Set dbTarget = CurrentDb()
Set rstTarget = dbTarget.OpenRecordset("SELECT MAX(ID) AS MaxId FROM tblTarget",
dbOpenSnapshot)
'درصورت خالی بودن مقدار آی دی صفر
If IsNull(rstTarget!MaxId) Then
lLastID = 0
Else
lLastID = rstTarget!MaxId
End If
'بازکردن مجدد برای اضافه کردن رکوردها
rstTarget.Close
Set rstTarget = dbTarget.OpenRecordset("tblTarget")
If rstSource.BOF And rstSource.EOF Then
MsgBox "Source is empty", vbCritical
Exit Sub
End If
rstSource.MoveLast
rstSource.MoveFirst
rstSource.Move (lLastID)
'یک حلقه از آخرین آی دی سورس تا تعداد رکوردهای جدول سورس
' ! آی دی حتما باید یکی یکی تغییر کرده باشه !
For i = lLastID + 1 To rstSource.RecordCount
rstTarget.AddNew
' یک حلقه که کلیه فیلدها رو یکی یکی به هم مقداردهی می کنه
For Each fldItem In rstSource.Fields
rstTarget.Fields(fldItem.Name) = fldItem.Value
Next
'به روز رسانی و حرکت به رکورد بعدی
rstTarget.Update
rstSource.MoveNext
lAddRecord = lAddRecord + 1
Next
'اعلام تعداد رکوردهای اضافه شده
MsgBox lAddRecord & "Added to target table", vbInformation
Exit Sub
' درصورت بروز خطا
ErrHandler:
If lAddRecord > 0 Then
MsgBox lAddRecord & "Added to target table successfully" & vbCrLf & "Error ocured"
, vbInformation
Else
MsgBox "Error on proccess", vbCritical
End If
End Sub
موفق باشی
:چشمک:
sarami
چهارشنبه 05 بهمن 1384, 16:26 عصر
با تشکر از جواب های دوستان ذکر یک نکته رو خالی از لطف ندیدم به نظر من طرح مسئله ایراد داره فرض کنیم شما اطلاعات رو از بانک دوم به بانک اول انتقال دادین حال اگه در بانک دوم برروی اطلاعات منتقل شده اصلاحی صورت بگیره متاسفانه اطلاعات منتقل شده برروز نخواهند گردید.
اگه میتونین از اصلاحاح اطلاعات پس از انتقال چشم پوشی کنین حق با شماست
مهدی سرتیپ
جمعه 07 بهمن 1384, 22:34 عصر
جناب mRizvandi عزیز
سلام
از شما واقعاً متشکرم .
:بوس:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.