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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2009, 17:04   #11
salima
Пользователь
 
Регистрация: 07.06.2008
Сообщений: 19
По умолчанию

не идет, вот мой код, может я гдето ошиблась
if ComboBox1.ItemIndex > -1 Then
begin
if ComboBox2.ItemIndex > -1 Then
begin
inc(currentQNumber);
StringGrid1.Cells[0, currentQNumber] := ComboBox1.Items[ComboBox1.ItemIndex];
StringGrid1.Cells[1, currentQNumber] := ComboBox2.Items[ComboBox2.ItemIndex];
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add(Concat('SELECT Nfact from Posylki WHERE nfact=', nfact[ComboBox1.ItemIndex]));
adoQuery1.Active:=true;
while not adoquery1.Eof do
begin
adoQuery2.SQL.Clear;
adoquery2.sql.Add(Concat('SELECT Nrz from Posylki WHERE NRz = ', nrz[ComboBox2.ItemIndex]));
adoQuery2.Active:=true;
If not adoquery2.Eof then
begin
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('INSERT INTO Posylki(Mp) VALUES (:m)');
ADOQuery3.Parameters.ParamByName ('m').Value:=1;
ADOQuery3.ExecSQL;
end
else
begin
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('INSERT INTO Posylki(Mp) VALUES (:m)');
ADOQuery3.Parameters.ParamByName ('m').Value:=-1;
ADOQuery3.ExecSQL;
ADOQuery4.Close;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('INSERT INTO Posylki(Mz) VALUES (:m)');
ADOQuery4.Parameters.ParamByName ('m').Value:=-1; //
ADOQuery4.ExecSQL;
end;
adoQuery1.Next;

end;
adoquery2.Close;
adoquery1.Close;
adoquery5.SQL.Clear;
adoquery5.SQL.Add('')
end;
end;
combobox1.ClearSelection;
combobox2.ClearSelection;
end;
salima вне форума Ответить с цитированием
Старый 09.12.2009, 17:08   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

INSERT INTO добавляет НОВЫЕ строчки в таблицу БД

может быть, Вам нужно изменять существующие?
UPDATE Posylki set MZ = 0 where <а тут условие, для каких записей обнулить Ваши метки...>
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.12.2009, 17:33   #13
salima
Пользователь
 
Регистрация: 07.06.2008
Сообщений: 19
По умолчанию

вот так можно?
if ComboBox1.ItemIndex > -1 Then
begin
if ComboBox2.ItemIndex > -1 Then
begin
inc(currentQNumber);
StringGrid1.Cells[0, currentQNumber] := ComboBox1.Items[ComboBox1.ItemIndex];
StringGrid1.Cells[1, currentQNumber] := ComboBox2.Items[ComboBox2.ItemIndex];
adoQuery1.SQL.Clear;
adoQuery1.SQL.Add(Concat('SELECT Nfact from Posylki WHERE nfact=', nfact[ComboBox1.ItemIndex]));
adoQuery1.Active:=true;
while not adoquery1.Eof do
begin
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(Concat('SELECT Nfact from Posylki WHERE NRz = ', nrz[ComboBox2.ItemIndex]));
ADOQuery2.ExecSQL;
if not adoquery2.Eof then
begin
ADOQuery3.Close;
ADOQuery3.SQL.Clear;
ADOQuery3.SQL.Add('UPDATE Posylki set Mp = 1');
ADOQuery3.ExecSQL;
end
else
begin
ADOQuery4.Close;
ADOQuery4.SQL.Clear;
ADOQuery4.SQL.Add('UPDATE Posylki set Mp = -1');
ADOQuery4.ExecSQL;
ADOQuery5.Close;
ADOQuery5.SQL.Clear;
ADOQuery5.SQL.Add('UPDATE Zakluch set Mz = -1');
ADOQuery5.ExecSQL;
end;
adoQuery1.Next;
adoquery2.next;
end;
adoquery2.Close;
adoquery1.Close;

end;
end;
combobox1.ClearSelection;
combobox2.ClearSelection;
end;

Последний раз редактировалось salima; 09.12.2009 в 17:40. Причина: ошибочка
salima вне форума Ответить с цитированием
Старый 09.12.2009, 19:49   #14
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) ТАК НЕЛЬЗЯ!!!!!!
Вы же ВСЕМ ЗАПИСЯМ меняете значение Mz !
Это так и надо?!
2) ошибка - для выполнения запросов SELECT
для QUERY надо выполнять операцию Open (ADOQuery2.Open)
а для выполнения операций изменения данных (Insert, Delete, Update) - .ExecSQL
Вы же для всех ExecSQL делаете

3) честное слово, Вам было бы лучше, если бы объяснили, зачем сколько запросов, что в них находится, и ЧТО собственно Вы хотите сделать.
Так - подробнее! Что есть, что надо сделать, и что Вы ожидаете получить в результате.
ибо по Вашему коду я лично ничегошеньки понять не могу...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.12.2009, 20:01   #15
salima
Пользователь
 
Регистрация: 07.06.2008
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
1) ТАК НЕЛЬЗЯ!!!!!!
Вы же ВСЕМ ЗАПИСЯМ меняете значение Mz !
Это так и надо?!
2) ошибка - для выполнения запросов SELECT
для QUERY надо выполнять операцию Open (ADOQuery2.Open)
а для выполнения операций изменения данных (Insert, Delete, Update) - .ExecSQL
Вы же для всех ExecSQL делаете

3) честное слово, Вам было бы лучше, если бы объяснили, зачем сколько запросов, что в них находится, и ЧТО собственно Вы хотите сделать.
Так - подробнее! Что есть, что надо сделать, и что Вы ожидаете получить в результате.
ибо по Вашему коду я лично ничегошеньки понять не могу...
пока я не ас в базах, поэтому прошу прощения. как могла записала, по кусочкам...
salima вне форума Ответить с цитированием
Старый 09.12.2009, 20:02   #16
salima
Пользователь
 
Регистрация: 07.06.2008
Сообщений: 19
По умолчанию

вот мой алгоритм, по нему и двигаюсь
Метка заключения = Метка З(ставим в таблице заключения «Zakluch»)
Метка посылки = Метка П(ставим в таблице посылки «Posylki»)
Метка З=0, если правило «хорошее»
Метка З=-1, если правило «плохое»

Метка П=0, если факт не порошен
Метка П=1 , если факт опрошен и ответ положительный
Метка П=-1, если факт порошен и ответ получен отрицательный

Определяем правило хорошее или плохое если найдено правило в таблице посылки в котором сходиться факт и разрешенное значение(РЗ) , которые пользователь выбрал.

Кнопка консультация:
1)очистить все(грид сетку, метки)
2)опросить факты(ответить на все вопросы но при этом при каждом опрошенном факте прверять выполнение правила ), то есть по номеру факта показать вопрос в комбобоксе1 и его разрешенные значения(РЗ) в комбобоксе2
3) очистить все метки

Кнопка добавить:
1)добавить выбранное в комбобоксе2 разрешенное значение(РЗ) в грид сетку в виде
Например,
игроки взрослые
Игра профессионалы
Погода облачно
2) расставить метки
Открыть факт+посылки+заключение, с номером факта =nfact(из комбобокса)
Цикл
Если номер РЗ(из бд)=номеру РЗ(из комбобокса)
то метка П=1
иначе метка П=-1
метка З=-1


3) проверить выполнение правила

Цикл по правилам(из Zakluch) когда метка З=0
Открыть посылки когда номер правила из посылок = номеру правила из заключений и когда метка П = 0
Если записей =0 то печатаем ответ и выход
Обновим факт+посылки+заключения когда метка П=0 и метка З=0
Если не еоf, то опросить факт
Иначе печатать «ответа нет»
salima вне форума Ответить с цитированием
Старый 09.12.2009, 20:09   #17
salima
Пользователь
 
Регистрация: 07.06.2008
Сообщений: 19
По умолчанию

мне нужно расставить метки т.е. сделать 2)
salima вне форума Ответить с цитированием
Старый 09.12.2009, 21:01   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

salima, вижу, что Вы искренне старались рассказать, что именно Вам нужно сделать...
Но, к огромному моему сожалению, вынужден признать,
что у меня "просветления" не наступило — что за данные и в какой таблице я не понял, как и то, что Вы собираетесь сделать с этими заключениями...
может, кто-то более сообразительный поймёт, что именно Вам нужно сделать....

___________________
Добавлено.
а может быть, Вы Ваши объяснения проиллюстрируете? Нарисуете схемки (картинки), где покажите, что и как..
Да и выложить Вашу программку (запакованный проект) (пусть и не доведённую до ума), было бы совсем не лишним...

Последний раз редактировалось Serge_Bliznykov; 09.12.2009 в 21:13.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADOQuery Sanakan Помощь студентам 0 10.11.2009 23:31
AdoQuery Stanislav БД в Delphi 34 26.06.2009 22:09
ADOQuery antoni БД в Delphi 3 19.06.2009 07:49
ADOQuery Только_Учусь Помощь студентам 2 16.07.2008 00:31
ADOQuery Roof БД в Delphi 2 12.07.2008 18:08