Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Вниз

Ключевре поле DB Paradox   Найти похожие ветки 

 
gvozdkoff ©   (2006-10-11 09:33) [0]

Всем привет
Такая вот проблемка
База данных по инвентаризации , например компов и оргтехники, на предприятии. В таблице есть такое поле как №_учета, ключевое т.е номер инвентаризации 7 или 9 значный (числовой). Соответственно это значение не может повторятся несолько раз, как написать обработчик, который бы выводил сообщение, что такой номер есть или что то в таком духе, и просил бы заново ввести номер.
А то без этого , иногда по ошибке вводишь уже существующее, а она выдает ошибку ужасную и все !!! закрывается не сохранившись


 
MsGuns ©   (2006-10-11 10:49) [1]

Способов несколько. Вот навскидку 2:
1. Поле с инвентарным номером (правильное название того, что Вы называете то "№ учета", то "номером инвентаризации") можно сделать уникальным индексом и все запросы на изменение вставку (если Вы из делаете запросами - TQuery) должы выполняться в защищенных блоках (Try .. Except ..) с анализом и индикацией ошибок. Если же коррекция в "гриде", то у датасета есть соотв.события, в т.ч. по ошибке вставки или измененияю В этих событиях и сигеализировать пользователя о конфликте.
2. Перед вставкой-изменением выполнять запрос с поиском введенного пользователем ИН и, если есть, выдавать сообщение и не постить запись в базу.

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


 
Desdechado ©   (2006-10-11 10:55) [2]

зачем дублить?
http://delphimaster.net/view/3-1160549430/


 
gvozdkoff ©   (2006-10-11 11:12) [3]

Коррекция  идет в гриде, многопользовательского доступа нет

MsGuns ©  
могли бы вы подробнее рассказать о соответствующих событиях датасет, или указать на нужную информацию

2 способ интересен, вот как это реализовать ?


 
gvozdkoff ©   (2006-10-11 11:16) [4]

Desdechado

приношу извинения


 
MsGuns ©   (2006-10-11 13:35) [5]

>gvozdkoff ©   (11.10.06 11:12) [3]
>Коррекция  идет в гриде, многопользовательского доступа нет

И не будет ?

>могли бы вы подробнее рассказать о соответствующих событиях датасет, или указать на нужную информацию

TDataSet.OnPostError (EDataBaseError)+F1

В событии выдавать сообщение об ошибке.

>2 способ интересен, вот как это реализовать ?

В обработчике события TDataSet.BeforePost написать что-то вроде такого:

var
 exist: boolean;
begin
  exist : = false;
  With TQuery.Create(nil) do
    try
     DataBase := <Ваш квери>.DataBase;
     SQL.Text := "Select Count (*) from <Ваша таблица> "+
         "Where  <имя поля ИН>="+QuotedStr(<Ваш квери>.FieldByName("<имя поля ИН>").AsString);
     Open;
     If Fields[0].AsInteger>0 then  exist := true;
     Close;
    finally
     Free;
    end;
   if exist then
     begin
      ShowMessage("Есть такой ИН");
      Abort;          // Выход без постинга  
     end;
end;


 
gvozdkoff ©   (2006-10-11 14:38) [6]

MsGuns

многопользовательского доступа небудет

за информацию спасибо



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.038 c
2-1160821158
Sanya_BBB
2006-10-14 14:19
2006.10.29
Как преобразовать double к string ?


2-1160749564
KidMan
2006-10-13 18:26
2006.10.29
Как узнать кол-во строк в таблице


15-1160119930
Holy
2006-10-06 11:32
2006.10.29
Школьная информатика


3-1157081407
tolianb
2006-09-01 07:30
2006.10.29
Экспорт из данных из DBGrid в Excel


2-1160716862
yel
2006-10-13 09:21
2006.10.29
Memo с картинками





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский