delphi4arab منتديات دلفي للعرب

نسخة كاملة : أشياء لا أحبها عند برمجة قواعد البيانات
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم

@محمد نسمان
(لكن الميزة الأساسية ( في Parameters) هي السرعة Performace بشكل كبير)

معلومة جديدة بالنسبة لي. بالرغم أنها أساسية. شكرا جزيلا لك.
السلام عليكم
أعتقد بخصوص المكونات الأصلية أن الأمر معها ليس سيء لهذه الدرجة طالما السورس متوفر والتعديل ممكن

مثال بسيط حول أمر مزعج بخصوص النمط TDBEdit عند ربطه مع حقل يحمل عملة نقدية...
باختصار... تداركت الأمر بالتعديل في أصل النمط بشيء مثل:

PHP كود :
TDBEdit = class(DBCtrls.TDBEdit)
  private
    
procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
  
end;
...
procedure TDBEdit.CMEnter(var Message: TCMEnter);
begin
  inherited
;
  if (
Trim(Self.Text) <> '')  and (not Self.ReadOnly) then
    Self
.Text := FormatFloat('#.##', StrToCurrency(Self.Text));
  
Self.SelectAll;
end; 
وقس على ذلك بقية المكونات Smile...
السلام عليكم ورحمةالله وبركاته
اتمنى ان لايكون النقاش قد انتهى , لان الموضوع مهم لمن يريد ان يقدم برنامجا قويا ومتماسكا .

كما قال الاخ خالد الشقروني عندما يكون البرنامج بسيط يمكن استخدام مكونات الربط . اما اذا كان المشروع ضخم هل يحبذ استخدام هذه المكونات DBEDIT,وغيرها

في هذه الصورة هل استخدام مكونات الربط محبذ . لااعتقد .لان المشاكل ستظهر بالجملة والبطء في البرنامج. فقررت استخدام EDIT ,COMBOBOX,وSTORED PROCEDURES, كي تحل المشاكل
وكي يكون البرنامج معتمد على SQL
PHP كود :
procedure TForm3.btn11Click(Sender: TObject);
var
proctrans:TADOStoredProc;
d2:TDate;
begin
    Form3
.ColumnGrid1.FocusCell(1,1) ;
   
img6.Visible:=false;
   
img2.Visible:=false;
   
image2.Visible:=false;
   
d2:= EncodeDate(YearOf(DateTimePicker1.date),MonthOf(DateTimePicker1.date),DayOf(DateTimePicker1.date));
 if 
edt1.Text ='' then
 begin
  
IF Trim(edt2.Text) ='' THEN BEGIN   img6.Visible:=true;EXIT; END;
  IF 
Trim(edt3.Text) ='' THEN BEGIN   img2.Visible:=true;EXIT; END;
  IF 
Trim(edt5.Text) ='' THEN BEGIN   image2.Visible:=true;EXIT; END;
  
//IF Trim(edt28.Text) ='' THEN BEGIN   img3.Visible:=true;EXIT; END;

   
try


  
DM.ADOConnection1.BeginTrans;
  
proctrans :=TADOStoredProc.Create(nil);
  
proctrans.Connection:=DM.ADOConnection1 ;

  
proctrans.ProcedureName :='addfact';
  
proctrans.Parameters.Refresh;


  
proctrans.Parameters.ParamByName('@id_artical').Value :=  edt22.text;
  
proctrans.Parameters.ParamByName('@artical').Value :=  edt2.text;
  
proctrans.Parameters.ParamByName('@id_mos').Value :=  edt26.text;
  
proctrans.Parameters.ParamByName('@id_dealer').Value := edt23.text;
  
proctrans.Parameters.ParamByName('@dealer').Value :=  edt3.text;
  
proctrans.Parameters.ParamByName('@id_c_t').Value :=  edt24.text;
  
proctrans.Parameters.ParamByName('@com_tra').Value :=  edt4.text;
  
proctrans.Parameters.ParamByName('@date_it').Value :=  d2;

  
proctrans.Parameters.ParamByName('@set_hold').Value := edt16.Text;
  
proctrans.Parameters.ParamByName('@id_card').Value := ColumnGrid1.Columns[1].Rows[1];
  
///////////////////////////////////////////////////
  
if DM.Qryselectkind.Fields.FieldByName('id').Value =1 then
  begin
   proctrans
.Parameters.ParamByName('@quant').Value := ColumnGrid1.Columns[2].Rows[1];
   
proctrans.Parameters.ParamByName('@quant2').Value := '0';

  
end;
  
////////////////////////
  
if DM.Qryselectkind.Fields.FieldByName('id').Value =2 then
   begin
   proctrans
.Parameters.ParamByName('@quant').Value :=  '0';
   
proctrans.Parameters.ParamByName('@quant2').Value := ColumnGrid1.Columns[2].Rows[1];

  
end;
  
//////////////////////////
    
if DM.Qryselectkind.Fields.FieldByName('id').Value =3 then
  begin
   proctrans
.Parameters.ParamByName('@quant').Value := '0';
   
proctrans.Parameters.ParamByName('@quant2').Value := ColumnGrid1.Columns[2].Rows[1];

  
end;
  
/////////////////////////
  
if DM.Qryselectkind.Fields.FieldByName('id').Value =4 then
   begin
   proctrans
.Parameters.ParamByName('@quant').Value :=  ColumnGrid1.Columns[2].Rows[1];
   
proctrans.Parameters.ParamByName('@quant2').Value := '0';

  
end;
  
////////////////////////////
    
if DM.Qryselectkind.Fields.FieldByName('id').Value =5 then
  begin
   proctrans
.Parameters.ParamByName('@quant').Value := ColumnGrid1.Columns[2].Rows[1];
   
proctrans.Parameters.ParamByName('@quant2').Value := '0';

  
end;
  
////////////////////////
  
if DM.Qryselectkind.Fields.FieldByName('id').Value =6 then
   begin
   proctrans
.Parameters.ParamByName('@quant').Value :=  '0';
   
proctrans.Parameters.ParamByName('@quant2').Value := ColumnGrid1.Columns[2].Rows[1];

  
end;
  
proctrans.Parameters.ParamByName('@solaf').Value := ColumnGrid1.Columns[3].Rows[1];
  
proctrans.Parameters.ParamByName('@sal').Value := edt10.Text;
  
proctrans.Parameters.ParamByName('@sal_d').Value := edt11.Text;
  
proctrans.Parameters.ParamByName('@sum_sal').Value := ColumnGrid1.Columns[5].Rows[1];
  
proctrans.Parameters.ParamByName('@tagr').Value := edt13.Text;
  
proctrans.Parameters.ParamByName('@taq_tah').Value := edt14.Text;
  
proctrans.Parameters.ParamByName('@tag_mor').Value := edt15.Text;
  
proctrans.Parameters.ParamByName('@sal1').Value :=  Form3.ColumnGrid1.Columns[6].Rows[1];
  
proctrans.Parameters.ParamByName('@taq_tah2').Value := edt18.Text;
  
proctrans.Parameters.ParamByName('@taq_mor2').Value := edt19.Text;
  
proctrans.Parameters.ParamByName('@sum_s').Value := edt20.Text;
  
proctrans.Parameters.ParamByName('@sum_ala').Value := edt21.Text;
  
proctrans.Parameters.ParamByName('@id_iteam').Value := edt25.Text;
  
proctrans.Parameters.ParamByName('@iteam').Value := edt5.Text;

  
proctrans.Parameters.ParamByName('@drivern').Value := edt27.Text;
   
proctrans.Parameters.ParamByName('@Tel1').Value := 'NO';
  
proctrans.Parameters.ParamByName('@id_kind').Value := EDT32.text;
  
proctrans.Parameters.ParamByName('@kind_H').Value := cbb1.text;
  
proctrans.Parameters.ParamByName('@id_chahen').Value :=edt34.text;
  
proctrans.Parameters.ParamByName('@card_driver').Value := 'NO';
  
proctrans.Parameters.ParamByName('@id_numcar').Value := edt35.Text;
  
proctrans.Parameters.ParamByName('@number_car').value := edt7.Text;
  
proctrans.Parameters.ParamByName('@id_store').Value := EDT33.text;
  
proctrans.Parameters.ParamByName('@name_store').Value := cbb2.text;
  
proctrans.Parameters.ParamByName('@tabriz').Value :=ColumnGrid1.Columns[4].Rows[1];
  
proctrans.Parameters.ParamByName('@chahen').Value := cbb3.text;

  
proctrans.Parameters.ParamByName('@id_dele2').Value := EDT30.text;
  
proctrans.Parameters.ParamByName('@name_dele2').Value := edt28.text;
  
proctrans.Parameters.ParamByName('@notec_add').Value :=ColumnGrid1.Columns[7].Rows[1];
  
proctrans.Prepared:=True;
  try
   
proctrans.ExecProc;
  finally
   
proctrans.Free;

  
end;


     if 
dm.ADOConnection1.InTransaction then begin dm.ADOConnection1.CommitTrans;

      if 
chk4.Checked=false then
      begin
      edt2
.Clear;
       
edt22.Clear;
      
end;
      if 
chk6.Checked=false then
      begin
        edt3
.Clear;

         
edt23.Clear;

      
end;
         if 
chk3.Checked=false then
      begin
        edt28
.Clear;
        
edt30.Clear;
        
edt10.Clear;
        
ColumnGrid1.Columns[5].Rows[1]:='';
        
ColumnGrid1.Columns[6].Rows[1]:='';
      
end;
       if 
chk2.Checked=false then
      begin
        edt5
.Clear;
        
edt13.Clear;
        
edt25.Clear;
      
end;


      
begin

        edt1
.Clear;
       
ColumnGrid1.Columns[7].Rows[1]:='';
        
edt7.Clear;
        
edt4.Clear;
        
edt27.Clear;
       
// edt28.Clear;
       
ColumnGrid1.Columns[1].Rows[1]:='';
       
ColumnGrid1.Columns[2].Rows[1]:='';
       
ColumnGrid1.Columns[3].Rows[1]:='';
       
ColumnGrid1.Columns[4].Rows[1]:='';

       
edt11.Clear;
        
edt14.Clear;
        
edt15.Clear;
        
edt16.Clear;
        
edt18.Clear;
        
edt19.Clear;
      
end;
      
begin
           
if EDT2.Enabled =False  then
        begin
         
if EDT5.Enabled =False  then
         begin
           
if EDT3.Enabled =False  then
           begin
            
if edt28.Enabled =false then
            begin
              edt7
.SetFocus;
            
end else begin
              edt28
.SetFocus;
            
end;
           
end else begin
             EDT3
.SetFocus;
           
end;
         
end else begin
           EDT5
.SetFocus;
         
end;
        
end else begin
         EDT2
.SetFocus;
        
end;







      
end;


     
end;

    
sumsto;
  
// pb1.Position:=100;

  
except
     on E
:exception do begin

   
if DM.ADOConnection1.InTransaction then
     DM
.ADOConnection1.RollbackTrans;
     
MsgText := 'حدث خطأ أثناء محاولة حفظ البيانات'
     
+ #13#10 + E.Message;
     
ShowMessage(MsgText);
    
//  pb1.Visible:=False;
   
end;

  
end;
  
end else begin
    
case
      
Application.MessageBox('هذه الوثيقة بحاجة الى تعديل , هل تريد التعديل',
      
'تنبيه', MB_YESNO + MB_ICONQUESTION) of
      IDYES
:
        
begin
          btn7
.Click;
        
end;
      
IDNO:
        
begin

        end
;
    
end;


  
end;

  
// pb1.Visible:=False;

end; 
[attachment=1331]

[attachment=1332]
لا تنس اخي الكريم ان البارادوكس يدعم اكثر من 3 مليار تسجيلة وهو محمي بشكل افضل من الاكسيس
اذن فلا تخلط علينا الامور
الصفحات : 1 2