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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2010, 09:29   #1
Danilka
Пользователь
 
Аватар для Danilka
 
Регистрация: 30.03.2010
Сообщений: 28
По умолчанию массив в БД / БД в массив

Здравствуйте!
Пишу программу на Delphi 7, которая должна уметь загружать БД в массив, без вывода в таблицу и наоборот: записывать массив в БД.
облазил, наверное, все что можно, но ничего толкового не нашел =( как это реализовать я даже не представляю, но догадываюсь что нужно работать с компонентом DataSource.

такиеже таблицы с такимже типом переменных находятся и в бд
Код:
type
  Element = record
    ID:string[5];
    Description:string[100];
    Operator:string[10];
    Height,Width:short;
    x,x1,y,y1:short;
    t:short;
end;
....
var
  Elements:array[1..100] of Element;
ЗЫ я начинающий прогописатель-самоучка, поэтому прошу описать все поподробней
Никогда и ничего не просите! Никогда и ничего, и в особенности у тех, кто сильнее вас. Сами предложат и сами все дадут! © Булгаков
Danilka вне форума Ответить с цитированием
Старый 30.03.2010, 09:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты в принципе умеешь читать из базы и передвигаться по набору данных из нее?
Заглядывал в примеры поставляемые с Делфи стандартно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2010, 12:41   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Danilka Посмотреть сообщение
Здравствуйте!
Пишу программу на Delphi 7, которая должна уметь загружать БД в массив, без вывода в таблицу и наоборот: записывать массив в БД.
догадываюсь что нужно работать с компонентом DataSource.
База данных как раз и состоит из таблиц... Но, видимо ты под таблицами подразумевал средство отображения данных, а не таблицы БД. DataSource устанавливает связь между набором данных (DataSet) и экранной таблицей (DbGrid). Поэтому тебе оно никак не поможет. Нужно работать с либо с DataSet, либо непосредственно с компонентом TTable или через TQuery...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 30.03.2010, 15:17   #4
Danilka
Пользователь
 
Аватар для Danilka
 
Регистрация: 30.03.2010
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты в принципе умеешь читать из базы и передвигаться по набору данных из нее?
Заглядывал в примеры поставляемые с Делфи стандартно?
умею только подключться к бд и выводить содержимое в компонент Table, но это мне не нужно
щас вот читаю литератубу по бд, а нащет примеров...а в какой они папке располагаются?
Никогда и ничего не просите! Никогда и ничего, и в особенности у тех, кто сильнее вас. Сами предложат и сами все дадут! © Булгаков
Danilka вне форума Ответить с цитированием
Старый 30.03.2010, 15:51   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в какой они папке располагаются?
Ну у меня в Д6 это папка DEMOS. А вообще могу в разных.

Скажем так читать при условии что поля у тебя совпадают с твоей записью можно так:
Код:
 table.open;
 while (not table.eof)and(Table.RecNo<length(Elements)) do begin
  with Elements[Table.RecNo] do begin
    ID:=FieldByName('ID').AsString;
    Description:=FieldByName('Description').AsString;
    Operator:=FieldByName('Operator').AsString;
    Height:=FieldByName('Heigth').AsInteger;
    Width:=FieldByName('Width').AsInteger;
    ... Ну и так далее
  end;
  table.next; 
 end;
Понял мысль?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2010, 16:06   #6
Danilka
Пользователь
 
Аватар для Danilka
 
Регистрация: 30.03.2010
Сообщений: 28
По умолчанию

спасибо, теперь немного понятнее стало. а запись в бд по такомуже принципу происходит?
Никогда и ничего не просите! Никогда и ничего, и в особенности у тех, кто сильнее вас. Сами предложат и сами все дадут! © Булгаков

Последний раз редактировалось mihali4; 30.03.2010 в 17:23.
Danilka вне форума Ответить с цитированием
Старый 30.03.2010, 16:35   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да. Только в FieldByName('Operator').AsString присваивать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2010, 16:45   #8
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Danilka Посмотреть сообщение
а запись в бд по такомуже принципу происходит?
Только не забудь перевести таблицу в режим редактирования Table.Edit, а после присваивания значений полям сохранить все изменения Table.Post
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 30.03.2010, 16:50   #9
Danilka
Пользователь
 
Аватар для Danilka
 
Регистрация: 30.03.2010
Сообщений: 28
По умолчанию

спасибо огромное, теперь буду колдовать =)

чтото у меня не получается=(((

Код:
  Table1.Edit;
  For j:=1 to j1 do  {по координате j1 находится последняя запись в массиве}
    begin
      Table1.FieldByName('ID').AsString:=Elements[j].ID;
      Table1.Next;
    end;
копилятор указывает на ошибку в команде Table1.Next сообщает, что Tabel1.Dataset не находится ни в режиме Edit, ни в Insert
Никогда и ничего не просите! Никогда и ничего, и в особенности у тех, кто сильнее вас. Сами предложат и сами все дадут! © Булгаков

Последний раз редактировалось Stilet; 01.04.2010 в 16:22.
Danilka вне форума Ответить с цитированием
Старый 01.04.2010, 16:34   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
 
  For j:=1 to j1 do  {по координате j1 находится последняя запись в массиве}
    begin Table1.Edit;
      Table1.FieldByName('ID').AsString:=Elements[j].ID;
      Table1.Next;
    end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одномерный массив. Q basic - Построить новый массив из элементов исходного ,которые больше P. Marishkaa Помощь студентам 2 12.01.2010 16:54
Двумерный массив, одномерный массив. Branbal Помощь студентам 14 18.11.2009 12:40
массив... Nightt Помощь студентам 3 18.06.2009 22:19
Массив Walter Помощь студентам 3 02.01.2009 17:21
Упорядочить массив в порядке возрастания и напечатать входной и исходный массив. TheVenny Помощь студентам 3 26.11.2008 15:06