|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.08.2012, 13:49 | #1 |
Регистрация: 15.08.2012
Сообщений: 8
|
SQL запрос в цикле
Здравствуйте. В БД создана таблица detali с первичным ключом id_det.
При работе программы требуется изменять значения в столбце parent. Собственно, запрос исполняется, но только для первой строчки. Что же не так? Код, выполняющий задумку: procedure TForm2.Button3Click(Sender: TObject); var k:integer; i:integer; begin ZTable1.Active:=false; ZTable1.TableName:='test.detali'; ZTable1.Active:=true; k:=ZTable1.RecordCount; // узнаем число записей в таблице i:=1; while i<=k do begin ZQuery4.Active:=false; ZQuery4.SQL.Clear; ZQuery4.SQL.Text:='UPDATE detali SET parent=0 WHERE id_det=' + inttostr(i); ZQuery4.Active:=true; i:=i+1; end; end; PS. Прошу прощения, если есть нарушения в оформлении поста. Исправлю, если что не так) |
15.08.2012, 14:01 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код не верный и вообще судя по этому коду там скорее всего одной командой UPDATE detali SET parent=0 можно все сделать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
15.08.2012, 14:12 | #3 | |
Регистрация: 15.08.2012
Сообщений: 8
|
Цитата:
А если нужен вот такой: ZQuery4.SQL.Text:='UPDATE detali SET parent=' +inttostr(i) + 'WHERE id_det=' + inttostr(i); т.е. значения для parent необходимо тоже менять. Хочу на примере простого разобраться, чтобы потом определять parent из более сложного условия. Например, из второго цикла по j.. Как правильно написать цикл и запрос в нем? Последний раз редактировалось Aza-Zel; 15.08.2012 в 14:17. |
|
15.08.2012, 14:36 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
1. Запросы в цикле это нонсенс. Очень-очень плохой пример программирования. В каждом конкретном случае хорошо все обдумать и как правило оказывается, что цикл не нужен
2. Использовать RecordCount для организации цикла очень рискованно, можно на большие неприятности нарваться. Если уж делать, то Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
15.08.2012, 14:42 | #5 | |
Регистрация: 15.08.2012
Сообщений: 8
|
Цитата:
|
|
15.08.2012, 14:47 | #6 |
Регистрация: 15.08.2012
Сообщений: 8
|
Ура! Пошло!
Аватар, низкий вам поклон) вроде фигня, а я с ней второй день вожусь) Сделал, как сказали. А цикл мне нужен. Конечно, это нехорошо так дерево строить, и есть хорошие статьи для этого, но я слишком плохой программист, чтобы в них разобраться. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
SQL запрос | Frosts | SQL, базы данных | 2 | 17.05.2011 22:34 |
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) | Машуля | SQL, базы данных | 4 | 06.05.2010 21:09 |
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi | S_Yevgeniy | Помощь студентам | 1 | 27.10.2009 06:26 |
SQL запрос на основе другого SQL запрса... | Timoxa | БД в Delphi | 1 | 07.01.2007 18:15 |