Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.05.2009, 17:45   #31
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Значит ту строку, которую у меня выделилась надо закоментить?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 10.05.2009, 13:48   #32
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

есть ли у кого нибудь исходник связи таблиц через мастер соурс? Скиньте пожалуйста если есть, чтобы посмотреть Как надо делать.(
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 10.05.2009, 14:22   #33
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

A чем тебя не устраивает исходник из моего поста №8.
Вроде бы там связь прописана.
По-моему, проблема заключается не в том как связь создана, а в заполнении связанных таблиц.
Сначала вставляется запись в главную таблицу, а потом в дочернюю.
Чтобы это проверить сделай такую связь между двумя таблицами, а потом сделай два грида. И прямо в нем редактируй запись. Сначала в главной сетке создай запись, потом в дочерней сделай несколько записей. После переключись снова на главную сетку, создай там еще одну запись и после заполни дочернюю сетку.
Если при переходе от одной записи к другой в главно сетке записи меняются в дочерней сетке, то значит все правильно построено, и все проблемы в коде с присваиванием значений полям.
Логика Базы данных все таки мне кажется не такая простая как отношение один ко многим. Прослеживается связь многие ко многим, а организовать это стандартыми средствами в BDE лично я не знаю как, кроме как вручную прописывать эти индексы соответствия таблиц, а потом через запрос выводить в сетку.
Если это был бы Access, то там можно было бы сделать отношения таблиц многие ко многим, сделать там простой запрос с этими таблицами. А потом в дельфи через AdoQuery сделать примерно так select * from [Zapros] и нас бы уже была выбрана необходимая информация.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 10.05.2009 в 14:36.
ArtInt вне форума
Старый 10.05.2009, 15:01   #34
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

а Как вручную прописать индексы соответствия?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 10.05.2009, 15:11   #35
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Вот этим я занимался в исходнике PersonalInfo2
На счет примера связи один ко многим сделал еще раз, в целом дело нескольких минут.
Там алиас заменишь на свой.
Вложения
Тип файла: rar связь один ко многим.rar (14.0 Кб, 18 просмотров)
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума
Старый 10.05.2009, 16:09   #36
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А то, что у меня идет вставка по циклу это не может мешать? Код:
Код:
 Table1.Insert;
 Table1.FieldByName('ФАМИЛИЯ').AsString:=Form1.SG9.Cells[1,i];
 Table1.FieldByName('ИМЯ').AsString:=Form1.SG9.Cells[2,i];
 Table1.FieldByName('ОТЧЕСТВО').AsString:=Form1.SG9.Cells[3,i];
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 10.05.2009, 16:42   #37
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

A Table1.Post дописывается внизу?
Может быть какие нибудь другие операции кроме присваивания полям таблицы1 между
Table1.Insert и Table1.Post присутствуют? Если так, то так не должно быть.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума
Старый 10.05.2009, 17:16   #38
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
A Table1.Post дописывается внизу?
Да).
Цитата:
Может быть какие нибудь другие операции кроме присваивания полям таблицы1 между
Table1.Insert и Table1.Post присутствуют?
Да нет. Вот полностью код внесения данных:
Код:
procedure TForm2.SpeedButton1Click(Sender: TObject);
begin
 for i:=1 to 25 do
   begin
 Table1.Insert;
 Table1.FieldByName('ФАМИЛИЯ').AsString:=Form1.SG9.Cells[1,i];
 Table1.FieldByName('ИМЯ').AsString:=Form1.SG9.Cells[2,i];
 Table1.FieldByName('ОТЧЕСТВО').AsString:=Form1.SG9.Cells[3,i];
 Table1.Post;
    end;
end;
Цитата:
Если так, то так не должно быть.
Мой код неправильный?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Старый 10.05.2009, 22:28   #39
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Вроде по логике все правильно написано.
А ошибка выходит на этих строках? Какая ошибка?
А если цикл убрать просто присвоить какое нибудь значение одному полю, тоже будет ошибка выходить?
--------------
Может ошибка не в базе данных, а то что в цикле идет обращение к несуществующей строке в StringGrid. Проверь,точно до 25, попробуй сделать меньшее значение.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 11.05.2009 в 11:07.
ArtInt вне форума
Старый 11.05.2009, 12:21   #40
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

ArtInt, дружище, смотри какая у меня тут ситуация (ничего что я к Вам на "ты"?). У меня в таблице 25 строчек.
Естественно, что они могут заполняться не все. Так вот, когда я заполняю например первые две строчки. Указываю
первую, например, четверть и год (в итоге получается, что у меня эти две записи относятся одновременно к одной и
той же четверти и одному и тому же году). И вот, когда я заношу данные в главную таблицу используя этот код:
Код:
procedure TForm2.SpeedButton1Click(Sender: TObject);
var
 i,h,Nomer:integer;
begin
 for i:=1 to 25 do
   begin
 Table1.Insert;
 Table1.FieldByName('ФАМИЛИЯ').AsString:=Form1.SG9.Cells[1,i];
 Table1.FieldByName('ИМЯ').AsString:=Form1.SG9.Cells[2,i];
 Table1.FieldByName('ОТЧЕСТВО').AsString:=Form1.SG9.Cells[3,i];
 Table1.Post;
    end;
end;
и в дочернюю, вот код:
Код:
procedure TForm2.SpeedButton34Click(Sender: TObject);
var
 i,Nomer_74: integer;
begin
 for i:=1 to 25 do
 begin
   if Form1.DBLookupComboBox2.Text = '1 четверть' then
     begin
     Form2.Table_74.Insert;
     Form2.Table_74.FieldByName('Chetvert').AsString:='1 четверть';
     Form2.Table_74.FieldByName('ГОД').AsInteger:=StrToInt(Form1.Edit3.Text);
     Form2.Table_74.Post;
     end;
 end;
end;
то в главной таблице у меня также заносятся и пустые строки, т.е. те строки, для которых не были внесены данные, а
так не должно быть. А в дочернюю заносятся также все записи, и те, для которых нет данных, т.е. которые пустые.
Заносятся все 25 записей (а должно только две) и для всех этих записей заносятся одно и тоже название четверти и
года (в принципе так и должно быть, но только для тех записей, для которых есть значения в главной таблице).
И когда я выбираю в главной таблице первую запись, то у меня в дочерней отображаются ВСЕ записи, а когда я в
главной таблице выбираю вторую запись, то в дочерней ниче не отображается. Вообщем, возникает вопрос: как сделать,
чтобы не заносились пустые строки? И второй вопрос: может из-за того, что заносятся пустые строки, поэтому у меня
и не отображаются данные как надо?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связь таблиц в Database Desctop Sergius X БД в Delphi 0 22.04.2009 16:53
Связь с кучей dbf файлов (таблиц) через OLEDB через UNION ALL Sasha811 SQL, базы данных 0 01.01.2009 14:04
Связь таблиц в Delphi adinadin111 БД в Delphi 3 10.07.2008 14:50
связь таблиц в локальной БД IGREK БД в Delphi 3 30.06.2008 19:46
Связь таблиц БД kaa БД в Delphi 5 18.09.2007 18:29