Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2013, 09:27   #1
King_Of_Arthur
Пользователь
 
Регистрация: 17.05.2013
Сообщений: 43
Вопрос Не работает проверка

Суть такая есть форма заполнения таблицы "Подразделения мест работы". У таблицы есть уникальный код PMR. Когда сотруднику присваивается подразделение места роботы (например он работает на Заводе а подразделением Цех 1). После присваивания уникальный код отображается в двух других таблицах NNlK и NWORK. Для удобства проверки наличия кода PMR эти таблицы помещены в Техническую таблицу (в ней прописано название таблиц и код PMR).
Так вот в чем вопрос я делаю проверку

Код:
procedure TF_PMR.ToolButton2Click(Sender: TObject);
begin
Q1.Close;
Q1.DatabaseName:='ARENA_';
Q1.SQL.Clear;
Q1.SQL.Add('Select * from TECH_UP Where TIP=3');
Q1.Open;
 While not Q1.Eof do begin
 Q2.Close;
 Q2.DatabaseName:='ARENA_';
 Q2.SQL.Clear;
 Q2.SQL.Add('Select * from '+ q1.fieldbyname('NM_TDB').asstring);
 Q2.SQL.Add('Where '+q1.fieldbyname('NM_POLE1').asstring+'='+M_PMR.FieldByName('pmr').AsString);
 Q2.Open;
   Q1.Next;
    end;
  if Q2.RecordCount>0 then
   ShowMessage('Нельзя удалить запись');
    if Q2.RecordCount=0 then
 
   begin
   Q2.Close;
   Q2.SQL.Clear;
   Q2.SQL.Add('DELETE from N_PMR ');
   Q2.SQL.Add('Where pmr='+M_PMR.FieldByName('pmr').AsString);
   Q2.ExecSQL;
   M_PMR.Delete;
end;
end;
В проверке в случае если есть код то нельзя удалить а если нету то запись удаляется.
Я уже такую проверку делала для другой таблице все нормально.
А в этом примере запись удаляется даже если она есть в таблице NNlK. Может здесь че не так подскажите пожалуйста.

Техническая таблица примерно так выглядит по этой таблице идет проверка



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.
Изображения
Тип файла: jpg Безымянный.JPG (6.9 Кб, 95 просмотров)

Последний раз редактировалось Serge_Bliznykov; 22.05.2013 в 13:11.
King_Of_Arthur вне форума Ответить с цитированием
Старый 22.05.2013, 10:06   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
код отображается в двух других таблицах NNlK и NWORK
Что это означает?
Цитата:
эти таблицы помещены в Техническую таблицу
а это?

для чего нужна какая-то "Техническая" .. не раскрыто.
eval вне форума Ответить с цитированием
Старый 22.05.2013, 10:22   #3
King_Of_Arthur
Пользователь
 
Регистрация: 17.05.2013
Сообщений: 43
По умолчанию

Ну вот есть еще форма заполнения сотрудника и когда для него указывается подразделение места работы то это отображается в таблицах NNlK и NWORK (только отображается не наименование подразделения а его код PMR)

А техническая таблица для осуществления запросов, проверок там хранятся наименования таблиц и полей по которым осуществляется запрос.

как то так
King_Of_Arthur вне форума Ответить с цитированием
Старый 22.05.2013, 10:30   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

ничего не понятно
я б такую техническую удалил и дело с концом.
eval вне форума Ответить с цитированием
Старый 22.05.2013, 10:55   #5
King_Of_Arthur
Пользователь
 
Регистрация: 17.05.2013
Сообщений: 43
По умолчанию

не льзя ее удалить. Я пробовала написать чтоб он проверял в каждой из таблиц но как зделать концовку на удаление не знаю

NNlK отображается код PMR и когда я делаю запрос только по этой таблицы то все нормально а NWORK ваще пустая но там есть поле PMR и когда я делаю по обойм таблицам проверку то запись удаляется

NNlK-это таблица PPLK, забыла просто название соответственно NWORK- это PWORK. TECH_UP-это техническая таблица через которую я и делаю проверку. M_PMR-это таблица памяти kbmMemTable, ну а N_PMR- это таблица подразделения мест работы.

Последний раз редактировалось Stilet; 23.05.2013 в 10:00.
King_Of_Arthur вне форума Ответить с цитированием
Старый 23.05.2013, 09:47   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

ай донт андэрстэнд
все много проще, вам надо показать тут вашу структуру, и желательно данные, и одним-двумя предложениями рассказать чего надо сделать, только не то как вы это себе представляете а то что требуется
в таком случае помощь более вероятна
eval вне форума Ответить с цитированием
Старый 23.05.2013, 10:38   #7
King_Of_Arthur
Пользователь
 
Регистрация: 17.05.2013
Сообщений: 43
По умолчанию

какую структуру?
King_Of_Arthur вне форума Ответить с цитированием
Старый 23.05.2013, 10:40   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от King_Of_Arthur Посмотреть сообщение
какую структуру?
Таблиц и их связей и в нормальном виде
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.05.2013, 11:21   #9
Airhand
Пользователь
 
Аватар для Airhand
 
Регистрация: 23.08.2011
Сообщений: 55
По умолчанию

Я точно не помню, но вроде там, запрос возвращает количество строк им обработанных. Вот отсюда и надо плясать. Надо сохранить количество строк обработанных запросом в переменную и потом уже с ней работать. Кроме того я бы советовал написать хранимую процедуру и параметрами к ней указывать условие. Количество строк можно доставать из системной таблицы.
"Пока бабка не смоет косметику, русский мужик не перекрестится" (C) Кто-то
Airhand вне форума Ответить с цитированием
Старый 23.05.2013, 12:55   #10
King_Of_Arthur
Пользователь
 
Регистрация: 17.05.2013
Сообщений: 43
По умолчанию

Спасибо всем особенно Airhand тебе я ввела переменную и все как по маслу ну мне еще помогли вообщем все работает всем спасибо
King_Of_Arthur вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка занятости DOS не работает fire_on Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 30.09.2012 16:01
не работает проверка на чётность Стас_с Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 04.08.2011 21:47
Проверка чисел на простоту. Не работает условие. krab777 Общие вопросы Delphi 2 06.06.2011 09:33
Некорректно работает проверка в покере yugik Общие вопросы C/C++ 2 17.09.2010 14:06
не работает проверка истинности strateg66 Помощь студентам 7 07.10.2009 13:38