اولاً
السلام عليكم ورحمة الله تعالى وبركاته
اتقدم بأحر التهانيء بمناسبة الإحتفال بمولد سيد البشر سيدنا ونبينا وحبيبنا وقرة أعيننا محمد إبن عبدالله رسول الله صلى الله عليه وعلى آله وصحبه والرضى على من تبع ملتهم أجمع
اللهم صلي وسلم عليه وسلم
اللهم اجعلنا من الحار يصين التشبث بسنة هذا النبيء واجعلنا يا الله من السامعين القول واتباع احسنه
أما بعد
ندخل في الموضوع الدنيوي
لقد ربطت جدول بجدول أخر (قاعدة البيانات بارادوكس واحيانا استعمل ابسوليت)
الجدول الأول وهو Table2 هذا الجدول يحتوي على خمس حقول
RB_CD من نوع String
RB_BS من نوع Float
SP1 من نوع Float
SP2 من نوع Float
SP3 من نوع Float
SP4 من نوع Float
SP5 من نوع Float
والجدول الثاني هو Table1 هذا الجدول يحتوي على
PS_CD من نوع SMALLINT
PS_LB من نوع sTRING
RB_CD من نوع string
PS من نوع sTRING
RB_BS من نوع flOAT
MT_PS من نوع fLOAT
المشكل أو المطلوب هو ااني بمجرد ما اعطي القيمة للحقل RB_CD الموجود بالجدول Table1
تظهر قيمة RB_SB الموجودة في الجدول Table1 من الجدول Table2
يعني اذا كانت القيمة المعطات في الحقل Table1RB_CD.value تساوي 1/04 يبحث في الجدولTable2
على هذه القيمة ويعطيني قيمة الحقل RB_SB التابعة لها ويضعها في الحقل Table1RB_SB.value
ونفس الشيئ بالنسبة للحقل SP الموجود في Table1
إذا كانت قيمة الحقلtable1SP.value تساوي 1 يقوم بإظهار قيمة الحقل SP1 من Table2SP1.value
إذا كانت قيمة الحقلtable1SP.value تساوي 2 يقوم بإظهار قيمة الحقل SP2 من Table2SP1.value
وهكذا
من دون ان استعمل الكود في زر على ان يكون هذا الكود بعد الضغط على مفتاح Enter بالديبيقريد
وللتوضيح اكثر المثال بالمرفق
السلام عليكم
يا شباب 8مشاهدات للمرفق والموضوع من مجموع 12 زيارة للموضوع
ولا أحد يجيب على السؤال او الطلب
إن كان السؤال غير مفهوم فاخبروني ماه الغير مفهوه في السؤال واجيب عليه حتى تتضحة المسالة ونسهل عملية الرد على الموضوع
ومن اراد ان يناقشني في الموضوع من خلال السكيب فهذا عنواني على السكيب
medreg2009
ما هو المشكل هل تريد ربط جدول مع جدول
chehrour كتب :ما هو المشكل هل تريد ربط جدول مع جدول
مشكور على الرد
يا اخي المشكل ليس في ربط الجدول بجدول آخر
المشكل يكمن في
عندما اضع القيمة 1/04 في الحقل RB_CD في Table1 و أضغط على زر Enter في DBGrid2 التابع ل Table1
يأتي بقيمة الحقل RB_BS من Table2 الى الحقل RB_BS الموجودة في ال Table1
عندما اضع القيمة 2/04 في الحقل RB_CD في Table1 و أضغط على زر Enter في DBGrid2 التابع ل Table1
يأتي بقيمة الحقل RB_BS من Table2 الى الحقل RB_BS الموجودة في ال Table1
وعندما اضع القيمة 1 في الحقل SP في table1 وأضغط على الزر Enter في DBGrid2 التابع ل Table1
يأتي بقيمة الحقل SP1 من Table2 الى الحقل MT_SP الموجودة في ال Table1
وعندما اضع القيمة 2 في الحقل SP في table1 وأضغط على الزر Enter في DBGrid2 التابع ل Table1
يأتي بقيمة الحقل SP2 من Table2 الى الحقل MT_SP الموجودة في ال Table1
إن شاء الله اكون قد وفقت في التوضيح
للتوضيح أكثر
لقد عملت سابقًا قبل ان ارفق الملف هذا الكود
كود :
procedure TForm1.DBGrid2Enter(Sender: TObject);
begin
table1.Edit;
table1RB_SB.Value:=Table2RB_SB.Value;
if table1SP.Value=1 then Table1MT_SP.Value:=table2SP1.value;
if table1SP.Value=2 then Table1MT_SP.Value:=table2SP2.value;
if table1SP.Value=3 then Table1MT_SP.Value:=table2SP3.value;
if table1SP.Value=4 then Table1MT_SP.Value:=table2SP4.value;
if table1SP.Value=5 then Table1MT_SP.Value:=table2SP5.value;
table1.Post;
end;
end.
لكن ما ابحث عنه هو كود يوفر علي تكرار العملية يعني من دون ان اكتب كل القيم كما ورد في الكود
مثلا ابحث عن كود الي هو يبحث على ما يساوي القيمة المراد استدعائها
medreg كتب :للتوضيح أكثر
لقد عملت سابقًا قبل ان ارفق الملف هذا الكود
تم التعديل على المرفق
ولكن ما ابحث عنه هو كود يوفر علي تكرار العملية يعني من دون ان اكتب كل القيم كما ورد في الكود
مثلا ابحث عن كود الي هو يبحث على ما يساوي القيمة المراد استدعائها
تفضل أخي ..
ولكن انصحك بتغيير التعاريف الى اسماء واضحة و تنظيم ترتيبب الحقول في الجداول و ال DBGrid
المشروع المعدل مرفق ..
PHP كود :
procedure TForm1.DBGrid2KeyPress(Sender: TObject; var Key: Char);
Var
GetStr:String;
begin
If Key = #13 Then
Begin
Case DBGrid2.Columns.Grid.SelectedField.Index OF
5: Begin
With Query1 Do Begin
Close;
ParamByName('A').Value :=DBGrid2.Columns.Grid.SelectedField.AsString;
Open;
IF FieldValues['RB_SB_CurrValue'] = Null Then GetStr:=''
Else GetStr:= FieldValues['RB_SB_CurrValue'];
End;
With Table1 Do Begin
Edit;
Fields[3].Value := GetStr;
Post ;
DBGrid2.Refresh;
End;
End;
1: Begin
With Query2 Do Begin
Close;
ParamByName('B').Value := DBGrid2.Columns.Grid.Fields[2].AsString;
Open;
Case DBGrid2.Columns.Grid.Fields[3].Value Of
1: GetStr := FieldValues['SP1'];
2: GetStr := FieldValues['SP2'];
3: GetStr := FieldValues['SP3'];
4: GetStr := FieldValues['SP4'];
5: GetStr := FieldValues['SP5'];
End;
End;
With Table1 Do Begin
Edit;
Fields[2].Value := GetStr;
Post ;
DBGrid2.Refresh;
End;
End;
End;
End;
end;
بالتوفيق ان شاء الله ..
rover كتب :تفضل أخي ..
ولكن انصحك بتغيير التعاريف الى اسماء واضحة و تنظيم ترتيبب الحقول في الجداول و ال dbgrid
المشروع المعدل مرفق ..
PHP كود :
procedure tform1.dbgrid2keypress(sender: Tobject; var key: Char);
var
getstr:string;
begin
if key = #13 then
begin
case dbgrid2.columns.grid.selectedfield.index of
5: Begin
with query1 do begin
close;
parambyname('a').value :=dbgrid2.columns.grid.selectedfield.asstring;
open;
if fieldvalues['rb_sb_currvalue'] = null then getstr:=''
else getstr:= fieldvalues['rb_sb_currvalue'];
end;
with table1 do begin
edit;
fields[3].value := getstr;
post ;
dbgrid2.refresh;
end;
end;
1: Begin
with query2 do begin
close;
parambyname('b').value := dbgrid2.columns.grid.fields[2].asstring;
open;
case dbgrid2.columns.grid.fields[3].value of
1: Getstr := fieldvalues['sp1'];
2: Getstr := fieldvalues['sp2'];
3: Getstr := fieldvalues['sp3'];
4: Getstr := fieldvalues['sp4'];
5: Getstr := fieldvalues['sp5'];
end;
end;
with table1 do begin
edit;
fields[2].value := getstr;
post ;
dbgrid2.refresh;
end;
end;
end;
end;
end;
بالتوفيق ان شاء الله ..
مشكور هذا هو الغرض المطلوب
حولت
البرنامج وفمت بما يلي :
احذف كل كود BitBtn1Click ماعدا table1.Post;
تصبح كمايلي:
كود :
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
table1.Post;
end;
واضافة Table1BeforePost تصبح كمايلي
كود :
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
VAR a:string[3];
begin
table2.Locate('RB_CD',table1RB_CD.Value,[loCaseInsensitive]);
table1RB_SB.Value:=table2RB_SB.Value;
a:='SP'+FloatToStr(table1SP.Value);
table1MT_SP.Value:=table2.FieldValues[a];
end;
بالتوفيق
حولت في البرنامج وقمت بما يلي :
احذف كل كود BitBtn1Click ماعدا table1.Post; ]تصبح كمايلي:
PHP كود :
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
table1.Post;
end;
واضقت Table1BeforePost تصبح كمايلي
PHP كود :
procedure TForm1.Table1BeforePost(DataSet: TDataSet);
VAR a:string[3];
begin
table2.Locate('RB_CD',table1RB_CD.Value,[loCaseInsensitive]);
table1RB_SB.Value:=table2RB_SB.Value;
a:='SP'+FloatToStr(table1SP.Value);
table1MT_SP.Value:=table2.FieldValues[a];
end;