السلام عليكم
اخواني في الوقت الحالي اعمل على عدة مشاريع بلغات مختلفة واطبلب منكم المساعدة في تحيول اكواد الئ الدلفي علما ان هدا المشروع هو مثال عن استخدام قاعدة البيانات الشيئية OOP والتي لم اعمل بها قط في الدلفي
شكرا
1- الكلاس الاول تحتوي على كل الخصائص للكاءن ممول اي الحقول الموجودة في الجدول ممول Fournisseur
c# ----Fournisseur.CS -----
using System;
using System.Collections.Generic;
using System.Text;
namespace Corfou.Common
{
[Serializable]
public class Fournisseur : Securitas.Base.IntBusinessObject
{
private int m_FournisseurID;
public int FournisseurID
{
get { return m_FournisseurID; }
set { m_FournisseurID = value; }
}
private string m_RaisonSociale;
public string RaisonSociale
{
get { return m_RaisonSociale; }
set { m_RaisonSociale = value; }
}
private string m_NumEtRue;
public string NumEtRue
{
get { return m_NumEtRue; }
set { m_NumEtRue = value; }
}
private string m_Ville;
public string Ville
{
get { return m_Ville; }
set { m_Ville = value; }
}
private string m_CodePostale;
public string CodePostale
{
get { return m_CodePostale; }
set { m_CodePostale = value; }
}
private string m_TelFournisseur;
public string TelFournisseur
{
get { return m_TelFournisseur; }
set { m_TelFournisseur = value; }
}
private string m_FaxFournisseur;
public string FaxFournisseur
{
get { return m_FaxFournisseur; }
set { m_FaxFournisseur = value; }
}
private string m_NumeroClientIACP;
public string NumeroClientIACP
{
get { return m_NumeroClientIACP; }
set { m_NumeroClientIACP = value; }
}
private double m_FraisPortDefault;
public double FraisPortDefault
{
get { return m_FraisPortDefault; }
set { m_FraisPortDefault = value; }
}
private int m_DelaisLivraison;
public int DelaisLivraison
{
get { return m_DelaisLivraison; }
set { m_DelaisLivraison = value; }
}
private string m_NomCommercial;
public string NomCommercial
{
get { return m_NomCommercial; }
set { m_NomCommercial = value; }
}
private string m_TelCommercial;
public string TelCommercial
{
get { return m_TelCommercial; }
set { m_TelCommercial = value; }
}
private string m_NomLivreur;
public string NomLivreur
{
get { return m_NomLivreur; }
set { m_NomLivreur = value; }
}
private string m_TelLivreur;
public string TelLivreur
{
get { return m_TelLivreur; }
set { m_TelLivreur = value; }
}
private string m_Commentaires;
public string Commentaires
{
get { return m_Commentaires; }
set { m_Commentaires = value; }
}
}
}Delphi ---Fournisseur.Pas----
unit U_Fournisseur; interface uses System.Collections.Generic, System.Text, Securitas.Base; type [Serializable] Fournisseur = class (IntBusinessObject) private Fm_FournisseurID: integer; Fm_RaisonSociale: string; Fm_NumEtRue: string; Fm_Ville: string; Fm_CodePostale: string; Fm_TelFournisseur: string; Fm_FaxFournisseur: string; Fm_NumeroClientIACP: string; Fm_FraisPort: real; Fm_DelaisLivraison: integer; Fm_NomCommercial: string; Fm_TelCommercial: string; Fm_NomLivreur: string; Fm_TelLivreur: string; Fm_Commentaires: string; public procedure set_m_FournisseurID(const Value: integer); procedure set_m_RaisonSociale(const Value: string); procedure set_m_NumEtRue(const Value: string); procedure set_m_Ville(const Value: string); procedure set_m_CodePostale(const Value: string); procedure set_m_TelFournisseur(const Value: string); procedure set_m_FaxFournisseur(const Value: string); procedure set_m_NumeroClientIACP(const Value: string); procedure set_m_FraisPort(const Value: real); procedure set_m_DelaisLivraison(const Value: integer); procedure set_m_NomCommercial(const Value: string); procedure set_m_TelCommercial(const Value: string); procedure set_m_NomLivreur(const Value: string); procedure set_m_TelLivreur(const Value: string); procedure set_m_Commentaires(const Value: string); property m_FournisseurID:integer read Fm_FournisseurID write set_m_FournisseurID; property m_RaisonSociale : string read Fm_RaisonSociale write set_m_RaisonSociale; property m_NumEtRue :string read Fm_NumEtRue write set_m_NumEtRue; property m_Ville :string read Fm_Ville write set_m_Ville; property m_CodePostale :string read Fm_CodePostale write set_m_CodePostale; property m_TelFournisseur :string read Fm_TelFournisseur write set_m_TelFournisseur; property m_FaxFournisseur :string read Fm_FaxFournisseur write set_m_FaxFournisseur; property m_NumeroClientIACP :string read Fm_NumeroClientIACP write set_m_NumeroClientIACP; property m_FraisPort :real read Fm_FraisPort write set_m_FraisPort; property m_DelaisLivraison : integer read Fm_DelaisLivraison write set_m_DelaisLivraison; property m_NomCommercial : string read Fm_NomCommercial write set_m_NomCommercial; property m_TelCommercial :string read Fm_TelCommercial write set_m_TelCommercial; property m_NomLivreur : string read Fm_NomLivreur write set_m_NomLivreur; property m_TelLivreur :string read Fm_TelLivreur write set_m_TelLivreur; property m_Commentaires : string read Fm_Commentaires write set_m_Commentaires; constructor Create; end; implementation constructor Fournisseur.Create; begin inherited Create; end; procedure Fournisseur.set_m_CodePostale(const Value: string); begin Fm_CodePostale := Value; end; procedure Fournisseur.set_m_Commentaires(const Value: string); begin Fm_Commentaires := Value; end; procedure Fournisseur.set_m_DelaisLivraison(const Value: integer); begin Fm_DelaisLivraison := Value; end; procedure Fournisseur.set_m_FaxFournisseur(const Value: string); begin Fm_FaxFournisseur := Value; end; procedure Fournisseur.set_m_FournisseurID(const Value: integer); begin Fm_FournisseurID := Value; end; procedure Fournisseur.set_m_FraisPort(const Value: real); begin Fm_FraisPort := Value; end; procedure Fournisseur.set_m_NomCommercial(const Value: string); begin Fm_NomCommercial := Value; end; procedure Fournisseur.set_m_NomLivreur(const Value: string); begin Fm_NomLivreur := Value; end; procedure Fournisseur.set_m_NumeroClientIACP(const Value: string); begin Fm_NumeroClientIACP := Value; end; procedure Fournisseur.set_m_NumEtRue(const Value: string); begin Fm_NumEtRue := Value; end; procedure Fournisseur.set_m_RaisonSociale(const Value: string); begin Fm_RaisonSociale := Value; end; procedure Fournisseur.set_m_TelCommercial(const Value: string); begin Fm_TelCommercial := Value; end; procedure Fournisseur.set_m_TelFournisseur(const Value: string); begin Fm_TelFournisseur := Value; end; procedure Fournisseur.set_m_TelLivreur(const Value: string); begin Fm_TelLivreur := Value; end; procedure Fournisseur.set_m_Ville(const Value: string); begin Fm_Ville := Value; end; end.
c#----FournisseurCollection.CS----
using System;
using System.Collections.Generic;
using System.Text;
namespace Corfou.Common
{
public class FournisseurCollection : Securitas.Base.IntBusinessObjectCollection<Fournisseur>
{
}
}DELPHI----FournisseurCollection.PAS----
unit U_FournisseurCollection; interface uses System.Collections.Generic,System.Text,Securitas.Base,U_Fournisseur; type FournisseurCollection = class (Securitas.Base.GuidBusinessObjectCollection<U_Fournisseur.Fournisseur>) end; implementation end.
3-
c#---FournisseurManager.CS-----
using System;
using System.Collections.Generic;
using System.Text;
namespace Corfou.Interfaces
{
public interface IFournisseurManager : Securitas.Base.IIntManager<Corfou.Common.Fournisseur>
{
Corfou.Common.FournisseurCollection FetchAll();
}
}DELPHI --FournisseurManager.pas----
unit U_FournisseurManager;
interface
uses
System.Collections.Generic,Corfou.Common.U_Fournisseur,
Corfou.Common.U_FournisseurCollection,
System.Text,Securitas.Base;
type
IFournisseurManager = interface (Securitas.Base.IIntManager<Corfou.Common.U_Fournisseur.Fournisseur>)
['{2CAEFE47-971B-429D-8E64-D699A75C41B8}']
function FetchAll(): Corfou.Common.U_FournisseurCollection.FournisseurCollection;
end;
implementation
end.c#--FournisseurDAL.PAS
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace Corfou.DAL.SQL
{
public class FournisseurDAL : Corfou.Interfaces.IFournisseurManager
{
private const string SQLAdd =
@"INSERT INTO Fournisseur
(RaisonSociale, NumEtRue, Ville, CodePostale, TelFournisseur,
FaxFournisseur, NumeroClientIACP, FraisPortDefault, DelaisLivraison, NomCommercial,
TelCommercial, NomLivreur, TelLivreur, Commentaires)
VALUES
(@RaisonSociale, @NumEtRue, @Ville, @CodePostale, @TelFournisseur,
@FaxFournisseur, @NumeroClientIACP, @FraisPortDefault, @DelaisLivraison, @NomCommercial,
@TelCommercial, @NomLivreur, @TelLivreur, @Commentaires)";
private const string SQLUpdate =
@"UPDATE Fournisseur SET
RaisonSociale = @RaisonSociale,
NumEtRue = @NumEtRue,
Ville = @Ville ,
CodePostale = @CodePostale,
TelFournisseur = @TelFournisseur ,
FaxFournisseur = @FaxFournisseur,
NumeroClientIACP = @NumeroClientIACP,
FraisPortDefault = @FraisPortDefault,
DelaisLivraison = @DelaisLivraison,
NomCommercial = @NomCommercial,
TelCommercial = @TelCommercial,
NomLivreur = @NomLivreur ,
TelLivreur = @TelLivreur,
Commentaires = @Commentaires
WHERE FournisseurID = @FournisseurID";
private const string SQLDelete =
@"DELETE FROM Fournisseur WHERE FournisseurID = @FournisseurID";
private const string SQLFetch =
@"SELECT * FROM Fournisseur WHERE FournisseurID = @FournisseurID";
private const string SQLFetchAll =
@"SELECT * FROM Fournisseur";
private Corfou.Common.Fournisseur GetFromReader(SqlDataReader dr)
{
Corfou.Common.Fournisseur item = new Corfou.Common.Fournisseur();
item.FournisseurID = (int)dr["FournisseurID"];
item.NomCommercial = dr["NomCommercial"].ToString();
item.NumEtRue = dr["NumEtRue"].ToString();
item.CodePostale = dr["CodePostale"].ToString();
item.Ville = dr["Ville"].ToString();
item.Commentaires = dr["Commentaires"].ToString();
item.RaisonSociale = dr["RaisonSociale"].ToString();
item.TelFournisseur = dr["TelFournisseur"].ToString();
item.FaxFournisseur = dr["FaxFournisseur"].ToString();
item.NumeroClientIACP = dr["NumeroClientIACP"].ToString();
try
{ item.FraisPortDefault = double.Parse(dr["FraisPortDefault"].ToString()); }
catch
{ item.FraisPortDefault = 0; }
try
{ item.DelaisLivraison = (int)dr["DelaisLivraison"]; }
catch
{ item.DelaisLivraison = -1; }
item.TelCommercial = dr["TelCommercial"].ToString();
item.NomLivreur = dr["NomLivreur"].ToString();
item.TelLivreur = dr["TelLivreur"].ToString();
return item;
}
public Corfou.Common.FournisseurCollection FetchAll()
{
Corfou.Common.FournisseurCollection items = new Corfou.Common.FournisseurCollection();
SqlConnection conn = new SqlConnection(Securitas.Base.SQLServer.Utils.ConnectionString);
SqlCommand comm = new SqlCommand(SQLFetchAll, conn);
//comm.Parameters.Add("@ESStructureID", SqlDbType.UniqueIdentifier).Value = structureID;
#region Execution de la requete
try
{
conn.Open();
SqlDataReader dr = comm.ExecuteReader();
while (dr.Read())
items.Add(GetFromReader(dr));
dr.Close();
}
catch (Exception ex)
{ throw new Securitas.Base.DALException("Error In FetchAll", ex); }
finally
{
comm.Dispose();
conn.Close();
}
#endregion
return items;
}
public int Add(Corfou.Common.Fournisseur item)
{
int iResult = 0;
SqlConnection conn = new SqlConnection(Securitas.Base.SQLServer.Utils.ConnectionString);
SqlCommand comm = new SqlCommand(SQLAdd, conn);
// Affecter les valeurs de "item" aux colonnes de la table
//comm.Parameters.Add("@FournisseurID", SqlDbType.UniqueIdentifier).Value = item.ID;
comm.Parameters.Add("@NomCommercial", SqlDbType.NVarChar).Value = item.NomCommercial;
comm.Parameters.Add("@NumEtRue", SqlDbType.NVarChar).Value = item.NumEtRue;
comm.Parameters.Add("@CodePostale", SqlDbType.NVarChar).Value = item.CodePostale;
comm.Parameters.Add("@Ville", SqlDbType.NVarChar).Value = item.Ville;
// Affecter la valeur "DBNull.value" si la colonnes peut etre nulle
if (item.Commentaires != null)
comm.Parameters.Add("@Commentaires", SqlDbType.NVarChar).Value = item.Commentaires;
else
comm.Parameters.Add("@Commentaires", SqlDbType.NVarChar).Value = DBNull.Value;
if (item.RaisonSociale != null)
comm.Parameters.Add("@RaisonSociale", SqlDbType.NVarChar).Value = item.RaisonSociale;
else
comm.Parameters.Add("@RaisonSociale", SqlDbType.NVarChar).Value = DBNull.Value;
if (item.TelFournisseur != null)
comm.Parameters.Add("@TelFournisseur", SqlDbType.NVarChar).Value = item.TelFournisseur;
else
comm.Parameters.Add("@TelFournisseur", SqlDbType.NVarChar).Value = DBNull.Value;
if (item.FaxFournisseur != null)
comm.Parameters.Add("@FaxFournisseur", SqlDbType.NVarChar).Value = item.FaxFournisseur;
else
comm.Parameters.Add("@FaxFournisseur", SqlDbType.NVarChar).Value = DBNull.Value;
if (item.NumeroClientIACP != null)
comm.Parameters.Add("@NumeroClientIACP", SqlDbType.NVarChar).Value = item.NumeroClientIACP;
else
comm.Parameters.Add("@NumeroClientIACP", SqlDbType.NVarChar).Value = DBNull.Value;
comm.Parameters.Add("@FraisPortDefault", SqlDbType.Money).Value = item.FraisPortDefault;
comm.Parameters.Add("@DelaisLivraison", SqlDbType.Int).Value = item.DelaisLivraison;
//// todo ////
comm.Parameters.Add("@TelCommercial", SqlDbType.NVarChar).Value = DBNull.Value;
comm.Parameters.Add("@NomLivreur", SqlDbType.NVarChar).Value = DBNull.Value;
comm.Parameters.Add("@TelLivreur", SqlDbType.NVarChar).Value = DBNull.Value;
#region Execution de la requete
try
{
conn.Open();
iResult = comm.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Securitas.Base.DALException("ErrorIn Add : " + ex.Message, ex);
}
finally
{
comm.Dispose();
conn.Close();
}
#endregion
return iResult;
}
public int Delete(int fournisseurID)
{
int iResult = 0;
SqlConnection conn = new SqlConnection(Securitas.Base.SQLServer.Utils.ConnectionString);
SqlCommand comm = new SqlCommand(SQLDelete, conn);
comm.Parameters.Add("@FournisseurID", SqlDbType.Int).Value = fournisseurID;
#region Execution de la requete
try
{
conn.Open();
iResult = comm.ExecuteNonQuery();
return 1;
}
catch (Exception ex)
{
throw new Securitas.Base.DALException("ErrorIn Delete : " + ex.Message, ex);
return -1;
}
finally
{
comm.Dispose();
conn.Close();
}
#endregion
}
public Corfou.Common.Fournisseur Fetch(int fournisseurID)
{
Corfou.Common.Fournisseur item = new Corfou.Common.Fournisseur();
SqlConnection conn = new SqlConnection(Securitas.Base.SQLServer.Utils.ConnectionString);
SqlCommand comm = new SqlCommand(SQLFetch, conn);
comm.Parameters.Add("@FournisseurID", SqlDbType.Int).Value = fournisseurID;
#region Execution de la requete
try
{
conn.Open();
SqlDataReader dr = comm.ExecuteReader();
if (dr.Read())
item = GetFromReader(dr);
else
throw new Securitas.Base.DALException("Fetch null");
dr.Close();
}
catch (Exception ex)
{ throw new Securitas.Base.DALException("Error In Fetch", ex); }
finally
{
comm.Dispose();
conn.Close();
}
#endregion
return item;
}
public int Update(Corfou.Common.Fournisseur item)
{
int iResult = 0;
SqlConnection conn = new SqlConnection(Securitas.Base.SQLServer.Utils.ConnectionString);
SqlCommand comm = new SqlCommand(SQLUpdate, conn);
comm.Parameters.Add("@FournisseurID", SqlDbType.Int).Value = item.FournisseurID;
comm.Parameters.Add("@NomCommercial", SqlDbType.NVarChar).Value = item.NomCommercial;
comm.Parameters.Add("@NumEtRue", SqlDbType.NVarChar).Value = item.NumEtRue;
comm.Parameters.Add("@CodePostale", SqlDbType.NVarChar).Value = item.CodePostale;
comm.Parameters.Add("@Ville", SqlDbType.NVarChar).Value = item.Ville;
// Affecter la valeur "DBNull.value" si la colonnes peut etre nulle
if (item.Commentaires != null)
comm.Parameters.Add("@Commentaires", SqlDbType.NVarChar).Value = item.Commentaires;
else
comm.Parameters.Add("@Commentaires", SqlDbType.NVarChar).Value = DBNull.Value;
if (item.RaisonSociale != null)
comm.Parameters.Add("@RaisonSociale", SqlDbType.NVarChar).Value = item.RaisonSociale;
else
comm.Parameters.Add("@RaisonSociale", SqlDbType.NVarChar).Value = DBNull.Value;
if (item.TelFournisseur != null)
comm.Parameters.Add("@TelFournisseur", SqlDbType.NVarChar).Value = item.TelFournisseur;
else
comm.Parameters.Add("@TelFournisseur", SqlDbType.NVarChar).Value = DBNull.Value;
if (item.FaxFournisseur != null)
comm.Parameters.Add("@FaxFournisseur", SqlDbType.NVarChar).Value = item.FaxFournisseur;
else
comm.Parameters.Add("@FaxFournisseur", SqlDbType.NVarChar).Value = DBNull.Value;
if (item.NumeroClientIACP != null)
comm.Parameters.Add("@NumeroClientIACP", SqlDbType.NVarChar).Value = item.NumeroClientIACP;
else
comm.Parameters.Add("@NumeroClientIACP", SqlDbType.NVarChar).Value = DBNull.Value;
comm.Parameters.Add("@FraisPortDefault", SqlDbType.Money).Value = item.FraisPortDefault;
comm.Parameters.Add("@DelaisLivraison", SqlDbType.Int).Value = item.DelaisLivraison;
//// todo ////
comm.Parameters.Add("@TelCommercial", SqlDbType.NVarChar).Value = DBNull.Value;
comm.Parameters.Add("@NomLivreur", SqlDbType.NVarChar).Value = DBNull.Value;
comm.Parameters.Add("@TelLivreur", SqlDbType.NVarChar).Value = DBNull.Value;
#region Execution de la requete
try
{
conn.Open();
iResult = comm.ExecuteNonQuery();
return 1;
}
catch (Exception ex)
{
throw new Securitas.Base.DALException("ErrorIn Update : " + ex.Message, ex);
return -1;
}
finally
{
comm.Dispose();
conn.Close();
}
#endregion
}
}
}DELPHI --- FournisseurDAL .PAS---
unit U_FournisseurDAL;
interface
uses
System.Data.SqlClient,
System.Data,
Corfou.Interfaces.U_FournisseurManager,
Securitas.Base.SQLServer,
Corfou.Common.U_FournisseurCollection,
Corfou.Common.U_Fournisseur,
Securitas.Base;
type
FournisseurDAL = class (TInterfacedObject,Corfou.Interfaces.U_FournisseurManager.IFournisseurManager)
public
constructor Create;
end;
implementation
CONST
SQLFetchAll ='SELECT * FROM Fournisseur';
constructor FournisseurDAL.Create;
begin
inherited Create;
end;
function GetFromReader(dr:SqlDataReader):Corfou.Common.U_Fournisseur.Fournisseur;
var
item : Corfou.Common.U_Fournisseur.Fournisseur;
begin
item := Corfou.Common.U_Fournisseur.Fournisseur.Create();
item.m_FournisseurID := Int32 (dr['FournisseurID']);
item.m_NomCommercial := dr['NomCommercial'].ToString();
item.m_NumEtRue := dr['NumEtRue'].ToString();
item.m_CodePostale := dr['CodePostale'].ToString();
item.m_Ville := dr['Ville'].ToString();
item.m_Commentaires := dr['Commentaires'].ToString();
item.m_RaisonSociale := dr['RaisonSociale'].ToString();
item.m_TelFournisseur := dr['TelFournisseur'].ToString();
item.m_FaxFournisseur := dr['FaxFournisseur'].ToString();
item.m_NumeroClientIACP := dr['NumeroClientIACP'].ToString();
try
// item.m_FraisPort := double.Parse(dr['FraisPortDefault'].ToString());
except
item.m_FraisPort := 0;
end;
try
item.m_DelaisLivraison := Int32 (dr['DelaisLivraison']);
except
item.m_DelaisLivraison := -1;
end;
item.m_TelCommercial := dr['TelCommercial'].ToString();
item.m_NomLivreur := dr['NomLivreur'].ToString();
item.m_TelLivreur := dr['TelLivreur'].ToString();
result:=item;
end;
{$REGION 'Execution de la requete'}
function FetchAll() : Corfou.Common.U_FournisseurCollection.FournisseurCollection;
var
items : FournisseurCollection;
conn : SqlConnection;
comm : SqlCommand;
dr : SqlDataReader;
begin
try
try
items := FournisseurCollection.Create();
conn := SqlConnection.Create(Securitas.Base.SQLServer.Utils.ConnectionString);
comm := SqlCommand.Create(SQLFetchAll, conn);
//comm.Parameters.Add("@ESStructureID", SqlDbType.UniqueIdentifier).Value = structureID;
conn.Open();
dr := comm.ExecuteReader();
while (dr.Read()) do
begin
items.Add(GetFromReader(dr));
dr.Close();
end;
Except //(Exception e)
// throw new Securitas.Base.DALException('Error In FetchAll', ex);
end;
finally
comm.Dispose();
conn.Close();
end;
result:= items;
end;
{$ENDREGION}
end.كما قلت اني احاول جاهدا على استعمال هده الطريقة افي الدلفي
اجوا المساعدة شكرا