Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
ВнизПомогите серенькому!!! Найти похожие ветки
← →
Timka (2002-03-26 18:54) [0]есть примерно такой кусок кода:
while not Table1.Eof do
begin
Table2.SetKey;
Table2.FieldByName("nnompr").Value
:=Table1.FieldByName("NNOM").Value ;
;
Table2.GotoKey;
Table2.Edit;
если я правильно понял, то Table2.GotoKey должно устанавливать текущей строку Table2, значение поля которой совпадает с Table1,
присвоение по отладчику идёт нормально, но после в Table2 текущей становится первая строка БД, почему это не срабатывает?
соответствующее значение ключевых полей существуют обязательно.
← →
VAleksey (2002-03-27 07:18) [1]Что-то ты неправильно описал по моему щас посмотрю
← →
VAleksey (2002-03-27 11:14) [2]В какой момент текущей становится первая строка, после цикла ?
Вообще позиция не меняется ?
← →
Timka (2002-03-27 17:48) [3]если смотреть по отладчику, то (если в скобочках - текущие значения полей для Table1 и Table2 соответственно)
{ в Table1- 4101 и в Table2 - 41206}
Table2.SetKey;
{ в Table1- null и в Table2 - 41206}
Table2.FieldByName("nnompr").Value
:=Table1.FieldByName("NNOM").Value ;
;{ в Table1- 41206 и в Table2 - 41206}
Table2.GotoKey;
{ в Table1- 4101 и в Table2 - 41206}
Label1.Caption := "
← →
Timka (2002-03-27 17:52) [4]в общем, впечатление такое, что Table2.GotoKey; устанавливает текущей в таблице 2 первую строку, и так делает на протяжении всего цикла. А вообще-то идея была такой : беру строкку из Табл1, нахожу соответствие в табл2 , устанавливаю найденную в состояние редактирования и этим пользуюсь. Может ещё какой путь есть? кроме постоянного перебора?
← →
Shaman_Naydak (2002-03-27 21:32) [5]Ну что, я так понимаю связка у тебя один к одному
стало быть делаем так:
Table2.IndexFieldNames:="nnompr"; // Нужен индекс по этому полю
Table2.MasterSource:=Table1DataSource; // Нужен будет Data Source
Table2.MasterFields:="NNOM";
Table1.First;
while not Table1.Eof do
begin
if not (Table2.Bof and Table2.Eof) then // проверяем что связка есть (на всякий случай, не помешает
begin
Table2.Edit;
// Blah-blah
Table2.Post;
end;
Table1.Next;
end;
← →
Shaman_Naydak (2002-03-27 21:34) [6]а в твоем способе:
GotoKey - ф-ция -> проверь, что она возвращает (True или False);
← →
Timka (2002-03-28 18:40) [7]Спасибо, работает. Только не очень удобно просматривать(в данном случае). GotoKey действительно возвращает ноль, причём всегда. Вот полный текст :
procedure TForm1.Button4Click(Sender: TObject);
begin
Table2.IndexFieldNames :="nnompr";
Table1.First;
while not Table1.Eof do
begin
if (not (Table2.Eof and Table2.Bof))
or (not (Table1.Eof and Table1.Bof))
then
begin
Table2.SetKey;
Table2.FieldByName("nnompr").asString:= "41206";
{Table1.FieldByName("NNOM").Value;}
if not Table2.GotoKey then
begin
Application.MessageBox("плохо",сообщение, MB_OK);
exit; { здесь оно выбивает всегда, даже если тупо задать ключевое поле}
end;
Sopostavlenie; { ф-ция, точно рабочая}
Table1.Next;
end
else Application.MessageBox("ещё и связи нет","Сообщение", MB_OK);
{ никогда не высвечивается}
end ;{ while not Table1.Eof}
end;
если идти по Вашему пути, всё работает, если запускаю эту процедуру - облом. Что может быть не так? (больше в программе ничего не меняется...)
← →
Shaman_Naydak (2002-03-28 19:49) [8]ну не знаю..
Какого типа у тебя NNompr и NNOM? (это может быть ОЧЕНЬ важно, если строковые)
Попробуй перестроить индекс, ну или, наконец, попробуй
if Table2.Locate("nnompr", [Table1.FieldByName("NNOM").Value], []) then
begin
Sopostavlenie;
end
П
← →
Timka (2002-03-29 09:35) [9]дело в том, что оба поля у меня - целые числа. (... .asString это я уже от безнадёги , раньше пробовал через Value)
← →
IPisk (2002-03-29 09:52) [10]А если попробовать метод Locate?
← →
Timka (2002-04-01 09:02) [11]Большое спасибо за подсказки. К сожалению, у меня возникает всё больше и больше вопросов. Получается,Ю что только Locate и работает . Не могу воспользоваться даже FindNearest, поскольку не срабатывает функция нидексирования поля . BDE выдаёт ошибку, перевод - что-то типа "сервис не поддержиается". HELP!!! Медленно впадаю в трнс... и выпадаю в осадок. Ещё немного и перейду на изучение VB :( .... ;)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c