Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Связь двух таблиц одной БД Access


Автор: mmik 26.2.2009, 13:04
Не знаю в какую тему ткунться. У меня возникла проблема следующего плана. Есть БД в Access, в которой две таблицы. Мне нужно брать данные из одной таблицы, обрабатывать их и кидать в другую. Пытаюсь реализовать следующим образом: на форме два datasource и два table. Пришлось создать два источника данных, ссылающихся на одну и ту же БД. При этом связь с первой таблицей (откуда данные читаются) есть, а вот со второй проблемы. Думаю со связью что-то напутано. Да, еще оговорюсь. Обращение к полям второй таблицы идет так:
table2.FieldByName(table1.Fields[1].AsString+table1.Fields[2].AsString+table1.Fields[i].AsString).AsString:=Search(edit2.Text,table1.Fiel ds[i].AsString);

как составное из имен полей первой таблицы.

Ошибки выдает разные:
Stream write error
Dataset not edit or insert mode

И еще, как избавиться от запроса логина и пароля доступа к БД при запуске приложения?

Автор: Данкинг 26.2.2009, 16:01
Цитата(mmik @  26.2.2009,  13:04 Найти цитируемый пост)
И еще, как избавиться от запроса логина и пароля доступа к БД при запуске приложения? 

Отключить запрос пароля в настройках AdoConnection. Если через ADO.

Автор: pseud 26.2.2009, 16:05
вобщем, как обычно, ошибка в 27 строке кода.

Добавлено через 4 минуты и 5 секунд
1. что за БД?
2. какие компоненты используешь?
3. на счет правомерности кода ничего не скажу, но читабельность....
table2.FieldByName(table1.Fields[1].AsString+table1.Fields[2].AsString+table1.Fields[i].AsString).AsString:=Search(edit2.Text,table1.Fiel ds[i].AsString);

а если так:
Код

with table1 do
begin
  s := Fields[1].AsString + Fields[2].AsString + Fields[i].AsString;
  table2.FieldByName(s).AsString := Search(edit2.Text, Fields[i].AsString);
end;

Автор: Hexel 27.2.2009, 00:57
Цитата(mmik @  26.2.2009,  13:04 Найти цитируемый пост)
Dataset not edit or insert mode


так вот это не ответ? не забыл дописать edit or insert перед изменением поля?

Автор: mmik 27.2.2009, 09:50
edit -а не было, только запись. Исправлено. 
Подробности: в первой таблице хранятся данные по приборам, группам и параметрам. На основании этих данных формируется запрос DDE-серверу. Данные, которые приходят от сервера нарезаются в соответствии с именем параметра и должны записываться в другую таблицу в поле с уникальным именем состоящим из имени группы,имени прибора и имени параметра. Это сделано для удобства пользователя, чтоб он сам потом мог подключать новые приборы и параметры.
Сейчас опять ошибку выдает, но почему-то в процедуре поиска по тексту (как раз той самой нарезке ответа от сервера). Которая до этого работал абсолютно четко. Буду разбираться. 

ODBC. Не найду никак где проверку пароля отменить.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)