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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.038 c
2-1127104746
nik7777
2005-09-19 08:39
2005.10.16
Создать текстовый файл


2-1126243191
sashuly
2005-09-09 09:19
2005.10.16
Внешнее объединение dbf в SQL запросе


14-1127760566
Piter
2005-09-26 22:49
2005.10.16
Ковырялся я тут в VCL...


11-1108113078
Alec
2005-02-11 12:11
2005.10.16
KOLEDB:MEMO поля


4-1124011803
Denis_Ac
2005-08-14 13:30
2005.10.16
Hook Chain





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский