Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

DBEdit के साथ कई तालिकाओं को स्वतः पूर्ण कैसे करें

मुझे आशा है कि आपके स्क्रीनशॉट में दिखाई गई तालिका की संरचना को देखते हुए मैं समझ गया हूँ कि आप क्या माँग रहे हैं।

नीचे दिया गया कोड दिखाता है कि किसी व्यक्ति तालिका में किसी दिए गए व्यक्ति का चयन करने के लिए शहर को प्रदर्शित करने के लिए DBLookUPComboBox कैसे सेट अप करें। मैंने TClientDataSets का उपयोग किया है ताकि यह स्व-निहित abd हो ताकि संपूर्ण सेटिंग अप ऑब्जेक्ट इंस्पेक्टर में संपत्ति सेटिंग्स के बजाय कोड में किया जा सके।

जाहिर है, DBGrid और dbNavigator dsPerson डेटा स्रोत से जुड़े हुए हैं।

कोड

  TForm1 = class(TForm)
    cdsCity: TClientDataSet;
    cdsPerson: TClientDataSet;
    dsPerson: TDataSource;
    DBGrid1: TDBGrid;
    DBLookupComboBox1: TDBLookupComboBox;
    dsCity: TDataSource;
    DBNavigator1: TDBNavigator;
    procedure FormCreate(Sender: TObject);
  end;
  [...]
  procedure TForm1.FormCreate(Sender: TObject);
  var
    Field : TField;
  begin

    Field := TIntegerField.Create(Self);
    Field.FieldName := 'CityId';
    Field.DataSet := cdsCity;

    Field := TStringField.Create(Self);
    Field.FieldName := 'City';
    Field.Size := 40;
    Field.DataSet := cdsCity;

    cdsCity.CreateDataSet;
    cdsCity.InsertRecord([3, 'Moscow']);
    cdsCity.InsertRecord([4, 'Leningrad']);

    Field := TIntegerField.Create(Self);
    Field.FieldName := 'PersonId';
    Field.DataSet := cdsPerson;

    Field := TIntegerField.Create(Self);
    Field.FieldName := 'CityID';
    Field.DataSet := cdsPerson;

    Field := TStringField.Create(Self);
    Field.FieldName := 'Name';
    Field.Size := 40;
    Field.DataSet := cdsPerson;
    cdsPerson.CreateDataSet;

    cdsPerson.InsertRecord([1, 4, 'Ivan']);
    cdsPerson.InsertRecord([2, 3, 'Kate']);

    DBLookupComboBox1.DataField := 'CityID';
    DBLookupComboBox1.DataSource := dsPerson;
    DBLookupComboBox1.KeyField := 'CityID';
    DBLookupComboBox1.ListField := 'City';
    DBLookupComboBox1.ListSource := dsCity;

  end;

ध्यान दें कि DBLookUpComboBox का उपयोग करने के बजाय (या साथ ही) आप cdsPerson डेटासेट में एक लुकअप फ़ील्ड भी परिभाषित कर सकते हैं, cdsPerson.CreateDataSet पर कॉल करने से पहले नीचे दिए गए कोड को जोड़कर। यदि आप ऐसा करते हैं, तो cdsPerson के पास एक अतिरिक्त, CityName, कॉलम होगा। यह डीबीजीड में प्रदर्शित होगा - आपको इसे देखने के लिए इसे सही स्क्रॉल करने की आवश्यकता हो सकती है - और यदि आप सिटीनाम सेल में से किसी एक में क्लिक करते हैं, तो आप देखेंगे कि यह एक इन-प्लेस, ड्रॉप-डाउन सूची को सक्रिय करता है जिससे एक शहर कर सकता है चयनित हो, जैसे

जब आप एक अलग शहर का नाम चुनते हैं, तो व्यक्ति रिकॉर्ड में सिटीआईडी ​​स्वतः अपडेट हो जाती है।

  Field := TStringField.Create(Self);
  Field.FieldName := 'CityName';
  Field.Size := 40;
  Field.DataSet := cdsPerson;
  Field.FieldKind := fklookUp;
  Field.LookUpDataSet := cdsCity;
  Field.LookUpKeyFields := 'CityID';
  Field.LookupResultField := 'CityName';
  Field.KeyFields := 'CityID';

अगर मैं आपकी टिप्पणी को सही ढंग से समझ पाया हूं, तो इसे आजमाएं:

  • फ़ॉर्म में दूसरा DBGrid और DBNavigator और DBEdit जोड़ें।

  • अपने सभी डेटा स्रोतों को dsCity पर सेट करें और DBEdit के डेटाफ़ील्ड को CityName पर सेट करें।

फिर आप सिटी टेबल में एक नया शहर जोड़ सकते हैं और उसका सिटीआईडी ​​(ग्रिड में) और सिटीनाम (ग्रिड या डीबीईडिट में) निर्दिष्ट कर सकते हैं। ध्यान दें कि जैसे ही आप इसे दूसरे डीबीनेविगेटर का उपयोग करके सहेजते हैं, फिर आप व्यक्ति ग्रिड के सिटीनाम सेल में क्लिक कर सकते हैं और नया सिटीनाम ड्रॉप-डाउन सूची में होगा। यदि आप इस संपादन को वर्तमान रिकॉर्ड . में करना चाहते हैं व्यक्ति तालिका में, आप सिटी टेबल पर एक आफ्टरपोस्ट ईवेंट हैंडलर जोड़कर उसमें कोड इस तरह जोड़ सकते हैं:

procedure TForm1.cdsCityAfterPost(DataSet : TDataSet);
begin
  cdsPerson.Edit;
  try
    cdsPerson.FieldByName('CityId').AsInteger := DataSet.FieldByName('CityId').AsInteger;
  finally
    cdsPerson.Post;
  end;
end;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं सी # कंसोल एप्लिकेशन में सीएमडी कमांड कैसे निष्पादित कर सकता हूं?

  2. मैं MySQL में ऑर्डर नामक तालिका कैसे बना सकता हूं?

  3. आप किन परिस्थितियों में चाहते हैं कि रेल को MYSQL से पुन:कनेक्ट न करने के लिए सेट किया जाए

  4. MySQL अपडेट इंक्रीमेंटेड (ऑटो-इन्क्रिमेंटेड नहीं) कॉलम मान

  5. MySQL कंसोल विशाल SQL फ़ाइलों के आयात पर धीमा