Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Значения в столбце 
:(
    Опции темы
JamesQ
Дата 6.8.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 6.8.2010

Репутация: нет
Всего: нет



есть таблица (Access), в ней столбец "ID", в столбце значения не по порядку идут 2, 14, 17, 36, 81. помогите так запрос составить, чтобы по нажатию кнопки эти значения изменились на 1, 2, 3, 4, 5.
кусок кода
Код

j:=ADOQuery1.RecordCount;
for i:=1 to j do
begin
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQL.Text:='UPDATE train SET Номер=:param1';
Parameters.ParamByName('param1'):=i;
ExecSQL;
Active:=True;
end;
end;


но программа меняет все значения в столбце на i, как быть?
PM MAIL   Вверх
Данкинг
Дата 6.8.2010, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(JamesQ @  6.8.2010,  17:46 Найти цитируемый пост)
но программа меняет все значения в столбце на i, как быть? 

Добавить условие where или же вместо запроса использовать цикл (в данном случае будет логичнее).


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
JamesQ
Дата 7.8.2010, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 6.8.2010

Репутация: нет
Всего: нет



через WHERE не получается у меня всего два столбца, в одном ID в другом название, а через цикл, так я вроде и делаю в цикле
PM MAIL   Вверх
Vas
Дата 7.8.2010, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 830
Регистрация: 29.6.2005
Где: Stavropol region

Репутация: 23
Всего: 28



Одним запросом такое не сделать, либо хранимую процедуру писать (хз есть они в акцессе или нет) или циклом в дельфи перебирать все записи и каждой менять id уже запросом
Код

i:=1;
while not Query1.Eof do
begin
   Query2.SQL.Clear;
  Query2.SQL.Add('update table set id='+IntToStr(i)+'where id='+Query1.FieldByName('id').AsString);
  Query2.ExecSQL;
  i:=i+1;
end;


ЗЫ: код не проверял, дельфей установленных нема

Добавлено через 1 минуту и 10 секунд
Забыл добавить, Query1 естественно сначала выбирает все записи отсортированные по id.


--------------------
И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель. ... (А.С. Пушкин)
PM MAIL   Вверх
Данкинг
Дата 7.8.2010, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Циклом - я имел в виду через .Edit ... .Post, а не запросом. Запрос же будет каждый раз перебирать все записи.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Antimol
  Дата 7.8.2010, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 28.7.2007
Где: Украина, Киев

Репутация: 4
Всего: 4



Самое элементарное что приходит на ум:
Я работаю с ADOConnection, AdoTable. 
В БД есть таблица с полем  id - поле в котором нужно изменять нумерацию.
1. размещаем на форме компонент AdoConnection - настраиваем подключение
2. размещаем на форме компонент AdoTable - подключаем к AdoConnection и выбирам таблицу которую нужно редактировать
3. размещаем на форме кнопку. На событие onClick пишем следующий код:

Код

var
  I: integer;
begin
  with ADOTable1 do
  begin
    First;
    for I := 0 to recordCount do
    begin
      Edit;
      FieldByName('id').Value:=i;
      Post;
      Next;
    end;
  end;
end;


--------------------
Лучшее спасибо это "+" к репутации.   Мой блог: ИНФОРМАТИЗАЦИЯ, и mirsovetov.net. Написание программ, исправление ошибок, статьи....
PM MAIL WWW ICQ   Вверх
JamesQ
Дата 8.8.2010, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 6.8.2010

Репутация: нет
Всего: нет



а значения в базе тоже поменяются?
PM MAIL   Вверх
Akella
Дата 8.8.2010, 12:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



JamesQ, ты для начала скажи, что вообще нужно? Мож ты просто не правильно вопрос задал?
Может тебе просто нужно отсортировать значения в DBGrid`е, вместо того, что бы изменять значения ID. И вообще, значения ID (как правило это ключевое поле) менять нельзя ни под каким предлогом.
PM MAIL   Вверх
JamesQ
Дата 8.8.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 6.8.2010

Репутация: нет
Всего: нет



есть таблица, в ней два столбца ID и 'Название', по мере добавления и удаления записей значения ID расположились не по порядку 2, 3, 7, 10, 12 и т.д. это доставляет некие неудобства пользователю, хотелось бы чтобы в DBGrid и в самой таблице тоже эти значения изменились на 1, 2, 3, 4, 5, по нажатию кнопки или при загрузке формы
PM MAIL   Вверх
Данкинг
Дата 8.8.2010, 18:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(JamesQ @  8.8.2010,  19:24 Найти цитируемый пост)
хотелось бы чтобы в DBGrid и в самой таблице тоже эти значения изменились на 1, 2, 3, 4, 5, по нажатию кнопки или при загрузке формы 

Не проще запросом выбрать записи в нужном порядке?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 8.8.2010, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



А я о чём.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.