घर
Top.Mail.Ru Yandeks.Metrika
फोरम: "मामले";
वर्तमान संग्रह: 2006.07.02;
डाउनलोड करें: [xml.tar.bz2];

नीचे

अतिरिक्त रिकॉर्ड में डिफ़ॉल्ट फ़ील्ड मान कैसे सेट करें इसी तरह की शाखाएँ खोजें


Nike   (2006-05-05 11:58) [0]

आपका स्वागत है! मैं एक प्रवेश प्रारूप डेटाबेस का उपयोग करके एक कार्यक्रम लिख रहा हूं, पहुंच एडीओ के माध्यम से है। Access में डेटाबेस बनाते समय, यह कुछ फ़ील्ड्स (स्ट्रिंग और न्यूमेरिक) के लिए डिफ़ॉल्ट मान सेट करता है। मेरे कार्यक्रम में प्रविष्टि जोड़ने पर (संपादन DBGrid में किया जाता है), संबंधित फ़ील्ड डिफ़ॉल्ट मान सेट नहीं करते हैं। इन मूल्यों को प्रदर्शित करने के लिए, आपको सबसे पहले आपके द्वारा जोड़े गए रिकॉर्ड को सहेजना होगा, और फिर टेबल पर रिफ्रेश विधि को कॉल करना होगा। फिर DbGride में डिफ़ॉल्ट मान दिखाई देते हैं। मुझे इसकी आवश्यकता है ताकि जब मैं "रिकॉर्ड जोड़ें" पर क्लिक करूं तो नए रिकॉर्ड में पहले से ही डिफ़ॉल्ट मान सेट हो गया है। इसे कैसे प्राप्त किया जाए?



ANB ©   (2006-05-05 12:06) [1]

एक OnNewRecord या AfterInsert घटना है;



Reindeer Moss Eater ©   (2006-05-05 12:09) [2]

Зачем устанавливать дефолтные значения для полей на уровне таблицы, если с клиента все равно идет вставка значений в эти поля?
Твои табличные дефолты все равно ни разу не сработают.



Nike   (2006-05-05 12:14) [3]

Проблема еще и в том, что если в инспекторе объектов просмотреть свойство ДефолтЭкспрессион для интересующих полей таблицы, то вместо введеных значений там хранятся пустые строки
रेनडियर मॉस ईटर को
Я хочу тобы при нажатии на "Добавить запись" в новой записи были уже установлены дефолтовые значения, и пользователю не приходилось догадываться, что если он не отредактирует поле, то туда будет записано значение по умолчанию



ANB ©   (2006-05-05 12:17) [4]


> то туда будет записано значение по умолчанию

Оно туда не будет записано ни при каком раскладе. Разве что ты сам формируешь инсерт и анализируешь, вводил юзер данные или нет.



Sergey13 ©   (2006-05-05 12:35) [5]

2 [2] हिरन का मोर्चा खाने वाला © (05.05.06 12: 09)
А в чем тут противоречие? Клиентов как и способов ввода может быть множество.
Автор просто немного не понимает мехонизма работы дефолтных значений.



Nike   (2006-05-05 12:51) [6]

А разве нельзя сделать так - нажимаешь инсерт рекорд, в ДБГриде появляется новая запись, но вместо пустых значений в некоторых полях записаны значения по умолчанию??



Nike   (2006-05-05 13:07) [7]

Сабжа можно добиться, к примеру, следующим путем:

1. Пользователь нажимает добавить запись.
2. Я отменяю добавление записи методом Cancel
3. Я сам формирую новую запись, вставляя в нужные поля дефолтовые значения, в индексированные поля уникальные значения.
4. Добавляю сформированную запись методом AppendRecord(значения полей)
5. Ставлю указатель в таблице на эту запись и перевожу таблицу в режим редактирования (Edit).

В результате у пользователя должно сложиться впечатление, что при добавлении новой записи программа сама заполняет поля значениями по умолчанию.
Вот примерно этого я и хочу добиться, только более простым путем...



Sergey13 ©   (2006-05-05 13:07) [8]

2 [6] Nike   (05.05.06 12:51)
>А разве нельзя сделать так - нажимаешь инсерт рекорд, в ДБГриде появляется новая запись
Так она только в гриде (не в нем, а в датасете ессно) и появляется. В БД, где ты прописал дефолты ее еще нет. И БД не знает что ты там и где нажал. Отсюда и "проблема" твоя.



Sergey13 ©   (2006-05-05 13:08) [9]

2[7] Nike   (05.05.06 13:07)
Тебе даже путь для этого указали в [1] ANB ©   (05.05.06 12:06)



Reindeer Moss Eater ©   (2006-05-05 13:11) [10]

А в чем тут противоречие?

В том, что создаваемый констрейнт никогда не сработает.



Sergey13 ©   (2006-05-05 13:12) [11]

2 [10] हिरन का मोर्चा खाने वाला © (05.05.06 13: 11)
Никогда не говори никогда. 8-)



Reindeer Moss Eater ©   (2006-05-05 13:15) [12]

वे तब काम करेंगे जब उपयोगकर्ता MSQuery का उपयोग करता है और तालिका में मैन्युअल सम्मिलित करता है, स्पष्ट रूप से सम्मिलित किए जाने वाले फ़ील्ड को सूचीबद्ध करता है और डिफ़ॉल्ट फ़ील्ड को फ़ील्ड की सूची से हटाता है।



Sergey13 ©   (2006-05-05 13:20) [13]

2 [12] हिरन का मोर्चा खाने वाला © (05.05.06 13: 15)
Ты в принципе отвергаешь такую вероятность? 8-)



Nike   (2006-05-05 13:23) [14]

सेवा मेरे सर्गेईएक्सएनयूएमएक्स © (एक्सएनयूएमएक्स एक्सएनयूएमएक्स: एक्सएनयूएमएक्स) [एक्सएनयूएमएक्स]
Я понимаю, что БД не может проверить ту запись, которой в ней еще нет. Но разве нет метода, который бы добавлял не пустую запись, а шаблон (с дефолтами)?

Почему инспектор объектов не видит мои аксессовские дефолты в поле DefaultExpression у объекта TField? (показывает пустую строку)



Reindeer Moss Eater ©   (2006-05-05 13:24) [15]

Нет не отвергаю. Это же Access.
Я говорю про корявость и нелогичность дизайнерского решения.
Там где требуется обработка на уровне newrecord датасета зачем-то лепят серверные биснес-правила.
प्लेग।



Sergey13 ©   (2006-05-05 13:26) [16]

2 [14] Nike   (05.05.06 13:23)
> Но разве нет метода
Есть один универсальный - написать нужный код.



Sergey13 ©   (2006-05-05 13:29) [17]

2 [15] हिरन का मोर्चा खाने वाला © (05.05.06 13: 24)
Просто ты рассматриваешь конкретно эту ситуацию, описанную автором для конкретной формы с конкретным гридом и конкретными желаниями.
А я говорю вообще. В нормально спроектированной и написанной системе большинство констрейнтов и исключений никогда не срабатывают. Но это не значит, что не надо вводить констрейнты и ловить возможные исключения. Не так?



Reindeer Moss Eater ©   (2006-05-05 13:33) [18]

यह सब सच है।
Только я действительно нахожусь в конкретной ветке с конкретным вопросом и рассуждаю конкретно.

Если уж на то пошло, то в SQL explorer есть замечательный инструмент - Dictionary. Создать словарь для своей БД насовать туда нужную логику и IDE подружится с разрабатываемой БД по самое не грусти.

क्या यह नहीं है?



Nike   (2006-05-05 13:41) [19]

Ответьте на второй вопрос, плиз:
Почему инспектор объектов не видит мои аксессовские дефолты в поле DefaultExpression у объекта TField? (показывает пустую строку)



Reindeer Moss Eater ©   (2006-05-05 13:43) [20]

Потому что поле асess и экземпляр TField - разные вещи, а не муж и жена.



ANB ©   (2006-05-05 16:30) [21]


> Nike   (05.05.06 13:41) [19]
> Ответьте на второй вопрос, плиз:
> Почему инспектор объектов не видит мои аксессовские дефолты
> в поле DefaultExpression у объекта TField? (показывает пустую
> строку)

А кто тебе сказал, что ADO умеет лазить по словарям всех типов БД, выцеплять оттуда дефолты и подставлять ? В списке полей их надо самому заполнить.



Anatoly Podgoretsky ©   (2006-05-05 19:57) [22]

Nike   (05.05.06 13:23) [14]
Шаблон и defaults - это разные вещи, если тебе нужен шаблон, так и сделай его.



Slym ©   (2006-05-06 05:29) [23]

Пример работы со схомой данных, применаятся на BeforePost
На основе этого сделай желаемое и поставь на AfterInsert
procedure TDM.ValidateTable(DataSet: TDataSet;const ATableName:string="");
var
 TableName:string;
 Strings:TStringList;
 DS:TADODataSet;
 IsNullable,Description:TField;
 i:integer;
begin
 if ATableName<>"" then TableName:=ATableName else TableName:=DataSet.Name;
 Strings:=TStringList.Create;
 try
   DS:=TADODataSet.Create(nil);
   try
     Conn.OpenSchema(siColumns,EmptyParam,EmptyParam,DS);
     IsNullable:=DS.FieldByName("IS_NULLABLE");
     Description:=DS.FieldByName("DESCRIPTION");
     for i:=0 to DataSet.FieldCount-1 do
     with DataSet.Fields[i] do
     begin
       if IsNull and not ReadOnly then
       begin
         if not DS.Locate("TABLE_NAME;COLUMN_NAME",VarArrayOf([TableName,FieldName]),[]) then
           Continue;
         if IsNullable.AsBoolean then Continue;
         if not Description.IsNull then
           Strings.Add("""+Description.AsString+""")
         else
           Strings.Add("""+FieldName+""");
       end;
     end;
   finally
     DS.Free;
   end;
   if Strings.Count>0 then
   begin
     Strings.Insert(0,"Не заполнены обязательные поля:");
     Application.MessageBox(Strings.GetText,"Ошибка!",MB_ICONERROR);
     Abort;
   end;
 finally
   Strings.Free;
 end;
end;



पन्ने: 1 पूरी शाखा

फोरम: "मामले";
वर्तमान संग्रह: 2006.07.02;
डाउनलोड करें: [xml.tar.bz2];

ऊपर





मेमोरी: 0.64 एमबी
समय: 0.057 c
2-1150047962
Adios
2006-06-11 21:46
2006.07.02
ShellListView


3-1146647594
Antoha111
2006-05-03 13:13
2006.07.02
रिचएडिट में लिंक डेटाबेस रिकॉर्ड्स के लिए


6-1140291759
जिमी
2006-02-18 22:42
2006.07.02
मॉडेम खेल


5-1134762564
Jenya
2005-12-16 22:49
2006.07.02
TlistView घटक में पंक्ति रंग बदलें ???


15-1149510150
Oldman
2006-06-05 16:22
2006.07.02
वैल्यूव ने विश्व खिताब का बचाव किया।





अफ्रीकी अल्बानियन अरबी भाषा अर्मेनियाई आज़रबाइजानी बस्क बेलारूसी बल्गेरियाई कैटलन सरलीकृत चीनी) चीनी पारंपरिक) क्रोएशियाई चेक डेनिश डच अंग्रेज़ी एस्तोनियावासी फिलिपिनो फिनिश फ्रेंच
गैलिशियन् जॉर्जियाई जर्मन यूनानी हाईटियन यहूदी हिंदी हंगरी आइसलैंड का इन्डोनेशियाई आयरिश इतालवी जापानी कोरियाई लात्वीयावासी लिथुआनियाई मेसीडोनियन मलायी मोलतिज़ नार्वेजियन
फ़ारसी पोलिश पुर्तगाली रोमानियाई रूसी सर्बियाई स्लोवाक स्लोवेनियाई स्पेनिश स्वाहिली स्वीडिश थाई तुर्की यूक्रेनी उर्दू वियतनामी वेल्श यहूदी बंगाली बोस्नियाई
सिबुआनो एस्पेरांतो गुजराती हौसा हमोंग ईग्बो जावानीस कन्नड़ खमेर लाओ लैटिन माओरी मराठी मंगोलियन नेपाली पंजाबी सोमाली तामिल तेलुगु योरूबा
ज़ुलु
Английский Французский Немецкий Итальянский Португальский Русский Испанский