Поиск:

Ответ в темуСоздание новой темы Создание опроса
> подскажите с INSERT 
V
    Опции темы
Karushev
Дата 31.1.2009, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем доброго дня!
Подскажите, может кто знает, почему с этим кодом заполняется только первая строка (с одним договором)? Как сделать, чтобы заполнялась вся таблица, т.е. сколько есть договоров (записей ID_Dogovor).

Может быть нужно еще с полем ID_Schet (счетчик) таблицы Schet, прописать в этом коде.

Код

procedure TForm7.Button1Click(Sender: TObject);
begin
try
DataModule2.TSchet.Insert;
DataModule2.TSchet.FieldByName('Date_Vipiski').Value:=DateTimePicker1.Date;
DataModule2.TSchet.FieldByName('Data_Oplati').Value:=DateTimePicker2.Date;
DataModule2.TSchet.FieldByName('Kod_Dogovor').Value:=DataModule2.TDogovor.FieldByName('ID_Dogovor'). Value;
DataModule2.TSchet.Post;
except
;
end;
end;


Это сообщение отредактировал(а) Rodman - 3.2.2009, 18:40
PM MAIL   Вверх
Akella
Дата 31.1.2009, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Karushev @  31.1.2009,  13:57 Найти цитируемый пост)
Подскажите, может кто знает, почему с этим кодом заполняется только первая строка


Цитата(Karushev @  31.1.2009,  13:57 Найти цитируемый пост)
Как сделать, чтобы заполнялась вся таблица

Бред какой-то smile , INSERT ДОБАВЛЯЕТ одну запись, и не зависимо от того, сколько уже в таблице записей!

Может ты не понимаешь разницы между Insert и Update?
Может тебе в цикле по всем записям таблицы нужно отредактировать их, все записи?
PM MAIL   Вверх
Данкинг
Дата 31.1.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Karushev @  31.1.2009,  13:57 Найти цитируемый пост)
почему с этим кодом заполняется только первая строка (с одним договором)?

Потому что этот код именно для этого и написан.

Цитата(Karushev @  31.1.2009,  13:57 Найти цитируемый пост)
Как сделать, чтобы заполнялась вся таблица, т.е. сколько есть договоров (записей ID_Dogovor).

В смысле - а откуда берутся эти договоры-то?

Цитата(Akella @  31.1.2009,  14:11 Найти цитируемый пост)
Может тебе в цикле по всем записям таблицы нужно отредактировать их, все записи? 

А, вот что, теперь дошло. smile Да, вероятно, нужно действительно или циклом, или запросом, в зависимости от целей.


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


Новичок



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

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



У меня есть таблицы Dogovor (ID_Dogovor, Kod_Tarifa, Data_Dogovora, Kod_Abonenta) и таблица Schet (ID_Schet, Data_Vipiski, Data_Oplati, Kod_Dogovora)

Первая таблица заполняется ручками ))
Вторая таблица связана с первой ID_Dogovor  с Kod_Dogovora

Вторую таблицу мне нужно заполнить с помощью кнопки обработчик написан выше. Даты присваиваются из DateTimePicker, ID_Shet это счетчик, 

Не знаю как это сделать, может кто предложит другой код?

С помощью этого кода заполняется только строка с первым договором.

Добавлено через 9 минут и 54 секунды
А если циклом кто-нибудь может помочь?

Получается так что цикл нужно организовать так: добавляются записи Sheta, 
количество такое же сколько и записей в таблице Dogovora.


PM MAIL   Вверх
Akella
Дата 31.1.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Karushev, код нудно выделять, чтобы твои сообщения были более читабельны и привлекательны, так сказать.
http://forum.vingrad.ru/forum/topic-126445.html
PM MAIL   Вверх
Karushev
Дата 3.2.2009, 12:09 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Неужели никто не знает, как заполнить таблицу? Может подскажите, где посмотреть аналогичный пример по заполнению одной таблицы, связанной с другой таблицей.  

Заранее, большое спасибо!  smile 
PM MAIL   Вверх
Akella
Дата 3.2.2009, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Karushev @  3.2.2009,  12:09 Найти цитируемый пост)
как заполнить таблицу?

ЗНАЕМ!!! smile  ЭТО ТЫ НЕ ЗНАЕШЬ, ЧЕМ ДОБАВЛЕНИЕ ОТЛИЧАЕТСЯ ОТ РЕДАКТИРОВАНИЯ! НОРМАЛЬНО ЗАДАЙ ВОПРОС. ЗДЕСЬ НЕ ТЕЛЕПАТЫ, ЧТОБЫ ОТГАДЫВАТЬ, ЧТО ТЫ ХОЧЕШЬ ТАМ У СЕБЯ!
PM MAIL   Вверх
Frees
Дата 3.2.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(Karushev @  3.2.2009,  14:09 Найти цитируемый пост)
 как заполнить таблицу? 

перебрать все записи
Код

procedure TForm7.Button1Click(Sender: TObject);
begin
DataModule2.TDogovor.First
while not DataModule2.TDogovor.eof do
  try
    DataModule2.TSchet.Insert;
    DataModule2.TSchet.FieldByName('Date_Vipiski').Value:=DateTimePicker1.Date;
    DataModule2.TSchet.FieldByName('Data_Oplati').Value:=DateTimePicker2.Date;
    DataModule2.TSchet.FieldByName('Kod_Dogovor').Value:=DataModule2.TDogovor.FieldByName('ID_Dogovor'). Value;
    DataModule2.TSchet.Post;
  except
  end;
end;



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Tcin
Дата 3.2.2009, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 7
Регистрация: 4.2.2008
Где: Екатеринбург

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



ну и не забываем про

Код

DataModule2.TDogovor.Next;


после try..except, но в теле цикла, конечно: добавь begin..end (уточню, на всякий случай...)
 smile 

Это сообщение отредактировал(а) Tcin - 3.2.2009, 13:09
PM   Вверх
Frees
Дата 3.2.2009, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(Tcin @  3.2.2009,  15:04 Найти цитируемый пост)
после try..except

скорее уж внутри


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Tcin
Дата 3.2.2009, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 7
Регистрация: 4.2.2008
Где: Екатеринбург

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



Цитата(Frees @  3.2.2009,  13:08 Найти цитируемый пост)
скорее уж внутри


пардон, внутри - не советую: next должен выполниться в любом случае.
PM   Вверх
Frees
Дата 3.2.2009, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Цитата(Tcin @  3.2.2009,  15:11 Найти цитируемый пост)
пардон, внутри - не советую: next должен выполниться в любом случае.

тогда вот так

Код

procedure TForm7.Button1Click(Sender: TObject);
begin
DataModule2.TDogovor.First
while not DataModule2.TDogovor.eof do
begin
  try
    DataModule2.TSchet.Insert;
    DataModule2.TSchet.FieldByName('Date_Vipiski').Value:=DateTimePicker1.Date;
    DataModule2.TSchet.FieldByName('Data_Oplati').Value:=DateTimePicker2.Date;
    DataModule2.TSchet.FieldByName('Kod_Dogovor').Value:=DataModule2.TDogovor.FieldByName('ID_Dogovor'). Value;
    DataModule2.TSchet.Post;
  except
  end;
  DataModule2.TDogovor.Next;  
end;
end;


Добавлено через 1 минуту и 52 секунды
Karushev, TDogovor и TSchet имена не правельные с Т начинаются имена типов а не компонентов



--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Karushev
Дата 3.2.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо! 

Только не работает, ошибка вылетает на 4 строчке:

Код

while not DataModule2.TDogovor.eof do


пишет:
[Error] Unit7.pas(44): Missing operator or semicolon
[Fatal Error] Project1.dpr(12): Could not compile used unit 'Unit7.pas'


Приложил базу, на всякий случай...

Это сообщение отредактировал(а) Karushev - 3.2.2009, 13:53

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  Television_Company.rar 668,28 Kb
PM MAIL   Вверх
Karushev
Дата 3.2.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем БОЛЬШОЕ СПАСИБО!!!

не хватало ;

Очень выручили с контрольной!

Это сообщение отредактировал(а) Karushev - 3.2.2009, 23:25
PM MAIL   Вверх
Данкинг
Дата 4.2.2009, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Karushev @  3.2.2009,  23:24 Найти цитируемый пост)
не хватало ;

Да вроде так и было написано, собственно, в ошибке. smile 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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