PDA

View Full Version : سوال: افتتاح سال مالی در SQLServer



ali_najari
پنج شنبه 31 تیر 1389, 00:30 صبح
سلام

ببخشید دوستان میخواستم بدونم چطوری باید سال مالی در SQLServer ایجاد کرد؟

من یه پروژه حسابداری دارم که بانک اطلاعاتیم SQLServer هست و برای هر سال مالی هم یه Database جداگونه دارم که به این صورت نام گذاری میشه (مثلا برای سال 1389) S_1389 .
حالا چطوری میتونم برای هر سال مالی یه Database داشته باشم؟

توی Database م هم Table دارم و هم View
چطور باید View با کد ایجاد کرد؟

hero4000
پنج شنبه 31 تیر 1389, 10:20 صبح
دوست عزيز شما بايد يک ديتابيس پايه بسازي با Table و View هايي که داري بعد هر بار که سال مالي خواستي بسازي يک کپي از اون بسازي و اطلاعات سال جديد رو توش بريزي

ali_najari
جمعه 01 مرداد 1389, 10:31 صبح
شرمنده میشه دستور کپی رو برام بذارید؟

Morteza Manafpour
جمعه 01 مرداد 1389, 18:59 عصر
با سلام
دوست عزيز در كنار كليدهاي اصلي يك سال مالي قرار داده كه با كليدهاي اصلي تشكليل كليد دهند سپس مقادير فيلدهاي سال مالي در برنامه رو با استفاده از يك متغير سراسري كه در ابتدا با گرفتن سال مالي از كاربر ايجاد ميشود پر كنيد

hero4000
شنبه 02 مرداد 1389, 09:13 صبح
دوست عزيز شما اول بايد هر موقع که بانکت کامل شد و هنوز هيچ اطلاعاتي واردش نکردي با استفاده از Managment خود Sql يک BackUp از ديتابيست بگيري و هر موقع خواستي سال مالي جديد رو بسازي اون BackUp رو Restore کني

راستي در مورد Restore کردن ديتابيس توي تالار به وفور بحث شده است فقط يک سرچ کوچولو لازم داره

ali_najari
دوشنبه 04 مرداد 1389, 01:06 صبح
میدونید مشکل کجاست ؟
مشکل اونجاست که من یه سری جداول دارم که میخوام اونا از سال مالی قبل به سال مالی بعد انتقال پیدا کنند بطور مثال من یه جدول حسابداری دارم و یه جدول مشتری حالا میخوام جدول حسابداری رو خالی انتقال بدم ولی جدول مربوط به مشتری رو کامل انتقال بدم
اینطوری باید چیکار کنم؟

hero4000
دوشنبه 04 مرداد 1389, 10:37 صبح
دوست عزيز موقعي که سال مالي جديد رو افتتاح کردي ( مثلا اسم ديتابيس جديدت BNew هستش و قبلي B هست ) حالا کافيه چند تا دستور SQl اجرا کني که تو تالار زياد نمونش هست

مثلا جدول مشتريت اسمش S هستش دستور زير رو مينويسي . البته من دقيق نميدونم فکر ميکنم اينجوري باشه . تو تالار بگردي درستش رو پيدا ميکني



Insert Into BNew.S (SElect * From B.s)

ali_najari
چهارشنبه 06 مرداد 1389, 15:44 عصر
دوست عزيز شما اول بايد هر موقع که بانکت کامل شد و هنوز هيچ اطلاعاتي واردش نکردي با استفاده از Managment خود Sql يک BackUp از ديتابيست بگيري و هر موقع خواستي سال مالي جديد رو بسازي اون BackUp رو Restore کني

راستي در مورد Restore کردن ديتابيس توي تالار به وفور بحث شده است فقط يک سرچ کوچولو لازم داره

سلام دوست عزيز من Backup گرفتم با كد "BackUp database ...." ولي وقتي ميخوام restore كنم خطا ميده و نميتونه اين كار رو بكنه

ali_najari
چهارشنبه 06 مرداد 1389, 17:35 عصر
سلام

من تونستم از روي فايل Backup سال مالي (S1389) رو ايجاد كنم ولي فقط يك بار ميتونم اينكار رو بكنم
وقتي ميخوام از روي همون فال Backup يه سال مالي ديگه (S1390) ايجاد كنم خطا ميده و ميگه اين فايل توسط S1389 استفاده شده.

حالا با اين چيكار كنم؟

حمیدرضاصادقیان
پنج شنبه 07 مرداد 1389, 00:02 صبح
سلام

من تونستم از روي فايل Backup سال مالي (S1389) رو ايجاد كنم ولي فقط يك بار ميتونم اينكار رو بكنم
وقتي ميخوام از روي همون فال Backup يه سال مالي ديگه (S1390) ايجاد كنم خطا ميده و ميگه اين فايل توسط S1389 استفاده شده.

حالا با اين چيكار كنم؟
سلام. شما باید از دستور Restore With move استفاده کنید.
توضیح1 (http://technet.microsoft.com/en-us/library/cc966495.aspx)
توضیح 2 (http://msdn.microsoft.com/en-us/library/ms186858.aspx)
موفق باشید

ali_najari
یک شنبه 10 مرداد 1389, 00:26 صبح
چطوری میشه فهمید که آیا بانکی با نام Sal_1389 وجود داره یا نه

s_mokhtari
شنبه 16 مرداد 1389, 19:17 عصر
چطوری میشه فهمید که آیا بانکی با نام Sal_1389 وجود داره یا نه
با سلام
اين كدش
select [name] from master.dbo.sysdatabases where [name]=@name2
اين پارامتر اسم ديتابيستون است بايد مثل استورپروسيجر درست كنيد و پارامتر رو بهش ارسال كنيد

ali_najari
یک شنبه 17 مرداد 1389, 16:53 عصر
اينها رو اول بالاي كلاس يا فرمت اضافه كنيد




Imports System.Data
Imports System.Data.SqlClient



سپس اينها رو توي كلاس يا توي كدهاي فرم اضافه كنيد




Private ObjCon As New SqlConnection
Private ObjCom As New SqlCommand
Public Sub doConnect(ByVal Servarname As String, ByVal DBName As String, ByVal USN As String, ByVal PWD As String)

Dim cs As String = "Data Source=" & Servarname & ";Initial Catalog=" & DBName & ";User ID=" & USN & ";Password=" & PWD
ObjCon.ConnectionString = cs
ObjCon.Open()
End Sub

Public Sub Disconnect()
ObjCon.Close()
End Sub

Public Sub doCommand(ByVal str As String)

doConnect(ServerN, "Master", User, Pass)
ObjCom.Connection = ObjCon
ObjCom.CommandText = str
ObjCom.ExecuteNonQuery()

Disconnect

End Sub




و اين هم طريقه استفاده كه بايد توي Button_click اضافه كنيد




Dim TXTSal as integer
Dim BackUpPath as string = "E:\Backup\EmptyData.bak"
Dim Path1 as string = Application.StartupPath & "\Database\"
TXTSal = 1389
doCommand("USE master; RESTORE Database [Sal" & TXTSal & "]" & _
" FROM Disk='" & BackupPath & " WITH RECOVERY," & _
"Move 'HesabData' TO '" & Path1 & "Sal" & TXTSal & ".mdf'," & _
"Move 'HesabData_Log' TO '" & Path1 & "Sal" & TXTSal & "_Log.ldf'")




اينم بگم كه هنگامي كه backup ميگيريد اون قسمتي كه نوشته Name، نام اون رو تعيين كنيد چون براي افتتاح سال مالي لازم است

مثلا من دادم HesabData هنگام Backup گرفتن

ali_najari
یک شنبه 17 مرداد 1389, 16:56 عصر
دوستان حالش رو ببريد
اگه خواستيد كه آدرس يه Database رو پيدا كنيد از طريق SQL بگيد تا براتون بزارم