Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

Цикл по записям.   Найти похожие ветки 

 
DimonS ©   (2005-09-05 10:24) [0]

Объясните мне, тупому. Как можно и можно ли вообще выполнить цикл по БД с помощью запросов? Просто есть 2 связанные таблицы, и нужно перебрать записи в первой для сравнения некоторых записанных значений в них. с TTable вопросов нет, а можно ли так сделать в запросах?


 
Anatoly Podgoretsky ©   (2005-09-05 10:26) [1]

Конечно можно, но не нужно


 
DimonS ©   (2005-09-05 10:43) [2]

Ну вот иногда приходится.


 
ANB ©   (2005-09-05 10:49) [3]


> DimonS ©   (05.09.05 10:24)
- нужно уточнить задачу. Если количество строк в двух таблицах или наборах данных, полученных двумя запросами одинаково и есть связь один к одному - то без проблем, как в TTable, First, Next, Eof. Если соответствие неполное, то Locate (при больших НД - некошерно). Еще лучше написать запрос, который вернет совпадающие или несовпадающие по какому нибудь условию записи из нужной таблицы. Смотреть [NOT] EXIST.


 
Sergey13 ©   (2005-09-05 10:50) [4]

2[2] DimonS ©   (05.09.05 10:43)
>Ну вот иногда приходится.
Иногда это приходится делать из-за незнания SQL.


 
ANB ©   (2005-09-05 10:53) [5]


> Sergey13 ©   (05.09.05 10:50) [4]
- мне тоже это приходится иногда делать. Когда нужно сравнить 2 набора данных, которые в идеале должны быть одинаковыми. Причем к моменту сравнения одного из них уже нет и существует он только в виде массива на клиенте.


 
Sergey13 ©   (2005-09-05 11:01) [6]

2 [5] ANB ©   (05.09.05 10:53)
Я и написал, что ИНОГДА. Понятно, что случаи бывают разные.


 
ANB ©   (2005-09-05 11:06) [7]


> Sergey13 ©   (05.09.05 11:01) [6]
- а, забей. Мы друг друга поняли. Автор только куда то ушел. Наверное, пошел SQL учить.


 
Ильш ©   (2005-09-05 11:08) [8]


> Причем к моменту сравнения одного из них уже нет и существует
> он только в виде массива на клиенте.

м-да... что курили пациент?
сравнить 2 таблицы средствами SQL не проблема... надо тока подумать немного ;)


 
ANB ©   (2005-09-05 11:13) [9]


> Ильш ©   (05.09.05 11:08) [8]
- если они существуют, то да :))) А если одна уже удалена или модиицирована или сравниваем старые и новые данные одной и той же таблицы ?


 
Ильш ©   (2005-09-05 11:17) [10]


> ANB ©   (05.09.05 11:13) [9]

в этом варианте ваша правда
но вопрос был о другом вроде бы :)))
тока автор оставил нас один на один с нашей недоразвитой телепатией :))))


 
DimonS ©   (2005-09-06 02:03) [11]

Да, оставил :) Разница по времени с Москвой у меня +6 ч, рабочее время закончилось..

В общем есть такой код:
Form3.Table1.Open;
while not Form3.Table1.Eof do
begin
if Form3.Table3.RecordCount=0 then
begin
   ShowMessage("Äëÿ ýòîãî ÏË íåò çàïèñåé ïî çàðïëàòå!"+#10#13+"Åãî íóæíî óäàëèòü è âíåñòè çàíîâî!");
    Form3.DBGrid1.Visible:=true;
    Form3.DBGrid2.Visible:=true;
    Form3.Button1.Enabled:=true;
    exit;
end;

if Form3.Table1.FieldByName("Tabel1").AsString="" then Ch:=1 else Ch:=2;
if Form3.Table3.RecordCount<Ch then
begin
    ShowMessage("&#194; &#193;&#196; &#239;&#238; &#231;&#224;&#240;&#239;&#235;&#224;&#242;&#229; &#231;&#224;&#237;&#229;&#241;&#229;&#237; &#242;&#238;&#235;&#252;&#234;&#238; &#236;&#224;&#248;&#232;&#237;&#232;&#241;&#242;!"+#10#13+"&#192; &#226; &#207;&#203; &#226;&#237;&#229;&#241;&#229;&#237; &#229;&#249;&#229; &#232; &#239;&#238;&#236;&#238;&#248;&#237;&#232;&#234;!");
    Form3.DBGrid1.Visible:=true;
    Form3.DBGrid2.Visible:=true;
    Form3.Button1.Enabled:=true;
    exit;
end;

SP:=0;
    SP:=Form3.Table1.fieldByName("CHas").AsCurrency;
    Form3.Table2.First;
    SN:=0;
    while not Form3.Table2.Eof do
    begin
       

         Form3.Table2.Edit;
         Form3.Table2.FieldByName("Prov").AsBoolean:=true;
         Form3.Table2.Post;
         SN:=SN+Form3.Table2.fieldByName("Chas").AsCurrency+Form3.Table2.fieldByName("Chas_per").AsCurrency+Form3.Table2.fieldByN ame("Chas_Prost").AsCurrency;
         //&#207;&#240;&#238;&#226;&#229;&#240;&#234;&#224; &#237;&#224; &#241;&#238;&#226;&#239;&#224;&#228;&#229;&#237;&#232;&#229; &#242;&#229;&#245;&#237;&#232;&#234;&#232; &#226; &#207;&#203; &#232; &#210;&#210;&#205;
         if Form3.Table2.fieldByName("Park").AsInteger<>Form3.Table1.fieldByName("Park").AsInteger then
         begin
              Form3.Label6.Caption:="&#205;&#229; &#241;&#238;&#226;&#239;&#224;&#228;&#224;&#229;&#242; &#237;&#238;&#236;&#229;&#240; &#239;&#224;&#240;&#234;&#224;!";
              Vihod;
              exit;
         end;

         if Form3.Table2.fieldByName("Nomer").AsString<>Form3.Table1.fieldByName("Nomer").AsString then
         begin
              Form3.Label6.Caption:="&#205;&#229; &#241;&#238;&#226;&#239;&#224;&#228;&#224;&#229;&#242; &#237;&#238;&#236;&#229;&#240; &#242;&#229;&#245;&#237;&#232;&#234;&#232; &#226; &#207;&#203; &#232; &#210;&#210;&#205;! &#206;&#228;&#232;&#237; &#247;&#229;&#235;&#238;&#226;&#229;&#234; &#237;&#229; &#236;&#238;&#230;&#229;&#242; &#240;&#224;&#225;&#238;&#242;&#224;&#242;&#252; &#239;&#238; &#238;&#228;&#237;&#238;&#236;&#243; &#207;&#203; &#237;&#224; &#240;&#224;&#231;&#237;&#238;&#233; &#242;&#229;&#245;&#237;&#232;&#234;&#229;!";
              Vihod;
              exit;
         end;

Мда, кодировка нета... Но в общем вроде понятно, хотя это только небольшой кусок кода. И вот как его можно реализовать через SQL?


 
Ильш ©   (2005-09-06 07:32) [12]

интересно как без структуры таблиц можно разобраться?
чужой код потемки


 
DimonS ©   (2005-09-06 07:40) [13]

Да в общем-то я получил ответ на вопрос свой, дальше сам разберусь уже. Спасибо всем, кто ответил.



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

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.043 c
14-1127082983
Германн
2005-09-19 02:36
2005.10.16
Upgrade - Кто виноват?


4-1124088075
Арсений
2005-08-15 10:41
2005.10.16
8 БИТ И ВСЕ, ВСЕ, ВСЕ…


5-1103047227
Deep
2004-12-14 21:00
2005.10.16
Невизуальные компоненты внутри другого невизуального компонента


3-1125468808
Programmer Andrey
2005-08-31 10:13
2005.10.16
Доступ к базе Paradox


6-1118762188
Dima__
2005-06-14 19:16
2005.10.16
работа с сокетами без создания формы