تم تعديل هذه المشاركة بواسطة عمرو الصعيدي في 1 مايو 2010 في 22:38
وممّا زادنـــي شرفــاً وتيهــاً ** وكدت بأخمصي أطأ الثريّا
دخولي تحت قولك يا عبادي ** وأن صيّرت أحمد لي نبيّـاً
تم تعديل هذه المشاركة بواسطة عمرو الصعيدي في 1 مايو 2010 في 22:38
وممّا زادنـــي شرفــاً وتيهــاً ** وكدت بأخمصي أطأ الثريّا
دخولي تحت قولك يا عبادي ** وأن صيّرت أحمد لي نبيّـاً
اخوانى لمن يريد استخدام تقنية ال LINQ فى البرنامج
من الممكن أن نعيد كتابة كود الأضافه السابق كما يلى
private void btnAddAccount_Click(object sender, EventArgs e)
{
/* Use LINQ */
LinqClasses.BonianDataContext db = new LinqClasses.BonianDataContext(LinqClasses.connectionString);
Table<LinqClasses.Account> Accounts = db.GetTable<LinqClasses.Account>();
LinqClasses.Account add = new LinqClasses.Account();
add.AccID = Convert.ToInt32(txtAccNum.Text);
add.AccName = txtAccNam.Text;
add.AccParent = Convert.ToInt32(txtAccPar.Text);
add.AccClass = cmbxClass.Text;
add.AccLevel = Convert.ToChar(txtAccLevel.Text);
add.AccNature = cmbxNat.Text;
add.AccStatement = cmbxStatmnt.Text;
add.IsParent = cmbxIsParent.Text;
add.OpenBalDr = Convert.ToDecimal(txtOpBalDr.Text);
add.OpenBalCr = Convert.ToDecimal(txtOpBalCr.Text);
Accounts.InsertOnSubmit(add);
db.SubmitChanges();
}ولتعريف ال Classes السابقه نضيف للمشروع كلاس جديده ونسميها LinqClasses
حيث ستحوى تعريفات لكائنات الداتابيز وسيتم تحديثها باستمرار وتحتوى على الكود التالى
ملحوظه : الكود التالى مأخوذ من ملف dbml المتولد عن طريق ال VS حيث أننى فضلت أن
أنشئ كلاس خاص بى وهو LinqClasses والأستغناء عن ملف dbml
using System.Data.Linq;
using System.Data.Linq.Mapping;
using System.Data;
using System.Collections.Generic;
using System.Reflection;
using System.Linq;
using System.Linq.Expressions;
using System.ComponentModel;
using System;
namespace Bonian
{
public class LinqClasses
{
public static string connectionString = @"Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BonianDB;Data Source=AMR\SQLEXPRESS";
//public static string connectionString = @"Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Bonian.mdf";
[System.Data.Linq.Mapping.DatabaseAttribute(Name = "BonianDB")]
public partial class BonianDataContext : System.Data.Linq.DataContext
{
private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
#region Extensibility Method Definitions
partial void OnCreated();
#endregion
public BonianDataContext() :
base(global::Bonian.Properties.Settings.Default.BonianDBConnectionString, mappingSource)
{
OnCreated();
}
public BonianDataContext(string connection) :
base(connection, mappingSource)
{
OnCreated();
}
public BonianDataContext(System.Data.IDbConnection connection) :
base(connection, mappingSource)
{
OnCreated();
}
public BonianDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
{
OnCreated();
}
public BonianDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) :
base(connection, mappingSource)
{
OnCreated();
}
}
[Table(Name = "dbo.Accounts")]
public partial class Account : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _AccID;
private string _AccName;
private System.Nullable<int> _AccParent;
private string _AccClass;
private char _AccLevel;
private string _AccNature;
private string _AccStatement;
private string _IsParent;
private System.Nullable<decimal> _OpenBalDr;
private System.Nullable<decimal> _OpenBalCr;
#region Extensibility Method Definitions
partial void OnLoaded();
partial void OnValidate(System.Data.Linq.ChangeAction action);
partial void OnCreated();
partial void OnAccIDChanging(int value);
partial void OnAccIDChanged();
partial void OnAccNameChanging(string value);
partial void OnAccNameChanged();
partial void OnAccParentChanging(System.Nullable<int> value);
partial void OnAccParentChanged();
partial void OnAccClassChanging(string value);
partial void OnAccClassChanged();
partial void OnAccLevelChanging(char value);
partial void OnAccLevelChanged();
partial void OnAccNatureChanging(string value);
partial void OnAccNatureChanged();
partial void OnAccStatementChanging(string value);
partial void OnAccStatementChanged();
partial void OnIsParentChanging(string value);
partial void OnIsParentChanged();
partial void OnOpenBalDrChanging(System.Nullable<decimal> value);
partial void OnOpenBalDrChanged();
partial void OnOpenBalCrChanging(System.Nullable<decimal> value);
partial void OnOpenBalCrChanged();
#endregion
public Account()
{
OnCreated();
}
[Column(Storage = "_AccID", DbType = "Int NOT NULL", IsPrimaryKey = true)]
public int AccID
{
get
{
return this._AccID;
}
set
{
if ((this._AccID != value))
{
this.OnAccIDChanging(value);
this.SendPropertyChanging();
this._AccID = value;
this.SendPropertyChanged("AccID");
this.OnAccIDChanged();
}
}
}
[Column(Storage = "_AccName", DbType = "VarChar(100) NOT NULL", CanBeNull = false)]
public string AccName
{
get
{
return this._AccName;
}
set
{
if ((this._AccName != value))
{
this.OnAccNameChanging(value);
this.SendPropertyChanging();
this._AccName = value;
this.SendPropertyChanged("AccName");
this.OnAccNameChanged();
}
}
}
[Column(Storage = "_AccParent", DbType = "Int")]
public System.Nullable<int> AccParent
{
get
{
return this._AccParent;
}
set
{
if ((this._AccParent != value))
{
this.OnAccParentChanging(value);
this.SendPropertyChanging();
this._AccParent = value;
this.SendPropertyChanged("AccParent");
this.OnAccParentChanged();
}
}
}
[Column(Storage = "_AccClass", DbType = "VarChar(100) NOT NULL", CanBeNull = false)]
public string AccClass
{
get
{
return this._AccClass;
}
set
{
if ((this._AccClass != value))
{
this.OnAccClassChanging(value);
this.SendPropertyChanging();
this._AccClass = value;
this.SendPropertyChanged("AccClass");
this.OnAccClassChanged();
}
}
}
[Column(Storage = "_AccLevel", DbType = "Char(1) NOT NULL")]
public char AccLevel
{
get
{
return this._AccLevel;
}
set
{
if ((this._AccLevel != value))
{
this.OnAccLevelChanging(value);
this.SendPropertyChanging();
this._AccLevel = value;
this.SendPropertyChanged("AccLevel");
this.OnAccLevelChanged();
}
}
}
[Column(Storage = "_AccNature", DbType = "Char(6) NOT NULL", CanBeNull = false)]
public string AccNature
{
get
{
return this._AccNature;
}
set
{
if ((this._AccNature != value))
{
this.OnAccNatureChanging(value);
this.SendPropertyChanging();
this._AccNature = value;
this.SendPropertyChanged("AccNature");
this.OnAccNatureChanged();
}
}
}
[Column(Storage = "_AccStatement", DbType = "VarChar(100) NOT NULL", CanBeNull = false)]
public string AccStatement
{
get
{
return this._AccStatement;
}
set
{
if ((this._AccStatement != value))
{
this.OnAccStatementChanging(value);
this.SendPropertyChanging();
this._AccStatement = value;
this.SendPropertyChanged("AccStatement");
this.OnAccStatementChanged();
}
}
}
[Column(Storage = "_IsParent", DbType = "Char(3) NOT NULL", CanBeNull = false)]
public string IsParent
{
get
{
return this._IsParent;
}
set
{
if ((this._IsParent != value))
{
this.OnIsParentChanging(value);
this.SendPropertyChanging();
this._IsParent = value;
this.SendPropertyChanged("IsParent");
this.OnIsParentChanged();
}
}
}
[Column(Storage = "_OpenBalDr", DbType = "Money")]
public System.Nullable<decimal> OpenBalDr
{
get
{
return this._OpenBalDr;
}
set
{
if ((this._OpenBalDr != value))
{
this.OnOpenBalDrChanging(value);
this.SendPropertyChanging();
this._OpenBalDr = value;
this.SendPropertyChanged("OpenBalDr");
this.OnOpenBalDrChanged();
}
}
}
[Column(Storage = "_OpenBalCr", DbType = "Money")]
public System.Nullable<decimal> OpenBalCr
{
get
{
return this._OpenBalCr;
}
set
{
if ((this._OpenBalCr != value))
{
this.OnOpenBalCrChanging(value);
this.SendPropertyChanging();
this._OpenBalCr = value;
this.SendPropertyChanged("OpenBalCr");
this.OnOpenBalCrChanged();
}
}
}
public event PropertyChangingEventHandler PropertyChanging;
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void SendPropertyChanging()
{
if ((this.PropertyChanging != null))
{
this.PropertyChanging(this, emptyChangingEventArgs);
}
}
protected virtual void SendPropertyChanged(String propertyName)
{
if ((this.PropertyChanged != null))
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
}البرنامج بعد التحديث فى المرفقات
وممّا زادنـــي شرفــاً وتيهــاً ** وكدت بأخمصي أطأ الثريّا
دخولي تحت قولك يا عبادي ** وأن صيّرت أحمد لي نبيّـاً
بسم الله
شاشة الحسابات لم تنتهى بعد ولكن سيكون بها تطوير باستمرار
ولكن ننتقل الأن الى مرحلة ادخال القيود والعمليات واقنرح عليكم الجداول الأتيه :
--//**********************************************************************************************// /* جدول العمليات*/ CREATE TABLE [dbo].[Transactions] ( TransactionDate datetime NOT NULL , TransactionID int NOT NULL , TransactionDes varchar(150) NOT NULL , Posting char(5) NOT NULL , CONSTRAINT [PK_Transactions] PRIMARY KEY CLUSTERED (TransactionDate,TransactionID) ) --//**********************************************************************************************// --/* جدول تفاصيل العمليات*/ CREATE TABLE [dbo].[TransactionsDetails] ( SerNo int identity NOT NULL , TransactionDate datetime NOT NULL , TransactionID int NOT NULL , AmountDr money , AmountCr money , AccName varchar(100) NOT NULL , AccID int NOT NULL , CONSTRAINT [PK_TransactionsDetails] PRIMARY KEY CLUSTERED (SerNo), CONSTRAINT [FK1_TransactionsDetails_Accounts] FOREIGN KEY (AccID) REFERENCES [dbo].[Accounts](AccID), CONSTRAINT [FK2_TransactionsDetails_Transactions] FOREIGN KEY (TransactionDate,TransactionID) REFERENCES [dbo].[Transactions](TransactionDate,TransactionID), )
ملحوظه : فى هذه الجداول أنا لم احدد نوع السند من حيث كونه
سند قيد
سند قبض
سند دفع
سند تسويه
ولكن اعتبرت أنه سند قيد يوميه عادى ....حتى الأن
وممّا زادنـــي شرفــاً وتيهــاً ** وكدت بأخمصي أطأ الثريّا
دخولي تحت قولك يا عبادي ** وأن صيّرت أحمد لي نبيّـاً
الشكل الذى سوف تكون عليه شاشة العمليات ان شاء الله
ملحوظه : بعض الدوال التى سوف نستخدمها فى القيود فيما بعد مقتبسه من كود للأخ BazaR فىمدونة محاسبه.نت
وممّا زادنـــي شرفــاً وتيهــاً ** وكدت بأخمصي أطأ الثريّا
دخولي تحت قولك يا عبادي ** وأن صيّرت أحمد لي نبيّـاً
السلام عليكم،،
نصيحة اخ محب
الانظمة المحاسبية = مضيعة للوقت
لا اقول لك قالولي بل اقول لك ادخل هنا ONX ERP
لن تستفيد الا القليل
ERP = High competion and few money
هناك كثير من الافكار البسيطة ممكن تعمل لها برنامج يصيب الهدف :cool:
لايؤمن احدكم حتى يحب لاخية مايحب لنفسة
برجاء عموم الفائدة
اللي يحب يجرب ال ONX ERP
المستخدم : admin
الباسورد: abc123
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
هل عند فتح اي حساب يكون الرصيد الافتتاحي = 0
هل يوجد رصيد افتتاحي مدين ورصيد افتتاحي دائن؟
واذاكان الرصيد الافتتاحي مدين يكون الرصيد الحالي دائن ويكون
الرصيد الحالي(الدائن) = الرصيد الافتتاحي(المدين)+الجانب المدين- الجانب الدائن
واذاكان الرصيد الافتتاحي دائن يكون الرصيد الحالي مدين ويكون
الرصيد الحالي(المدين) = الرصيد الافتتاحي(الدائن)+الجانب الدائن- الجانب المدين
الله في عون العبد مادام العبد في عون اخيه
الله في عون العبد مادام العبد في عون اخيه
شو كلمة السر لقاعدة البيانات