Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Считывание данных из таблицы (базы) [D7, XP]


Страницы:   1 2

npu3pak ©   (2007-04-13 08:40:00) 

Доброго времени суток!
Я пишу дипломную работу. Тема: Базы данных. Программа для компьютерного клуба.
У меня такая проблема:
Когда я ввожу данные в базу - все нормально. Отнимается время, которое осталось.
Но как только я закрываю форму. Отсчет прекращается :(
Так вот: как считать данные из базы, поместить их в массив и продолжить отнимать время, которое осталось.
Я уже пробовал через adodataset и через adoquery. Не канает! :( т.е. я не могу считать данные из таблицы.
Советовали так для мемо-поля:

while not adoquery1.eof do
begin
memo1.lines.add(adoquery1.fieldbyname('name').asstring);
adoquery1.next;
end;

а правильно так:
var
fname: TFieald;
...
with memo1.lines, adodataset1 do begin
BeginUpdate;
try
   fname:= fieldbyname('name');

   first;
   while not eof do begin
      add(fname.asstring);
      next;
   end;

finally
   EndUpdate;
end;
end;


Но так не работает. Может нужно что-нибудь еще?
Помоги начинающему, плиз!!! ;)


Anatoly Podgoretsky   (2007-04-14 17:09:00) [1]

> Сергей М.  (13.04.2007 11:12:12)  [12]

Красиво так будет, если RecordCount окажется скажем так 1, а  not EOF получит 10 записей.


npu3pak   (2007-04-14 10:57:00) [2]


> Сергей М.


> var
> Arr: array of TDatetime;
>
> ..
>
> Query.Open;
> with Query do
> try
>  Last;
>  SetLength(Arr, RecordCount);
>  First;
>  while not EOF do begin
>    Arr[i] := FieldByName('окончание').Value;
>    Next;
>  end;
> finally
>  Close;
> end;


в данном случае появляется ошибка "Проводник не поддерживает... " :(


{RASkov}   (2007-04-13 14:57:00) [3]

> И потом - меньше заморочек с подсчетом! Лично мое мнение по данному вопросу.

Хреновое мнение....что проще складывать/вычитать - "числа" или "строки"?
Вообщем, данные с датасетов считываются так: <FieldName>.Value или [AsXxxxx]....и ты их уже давно считал.
Вопросы?


npu3pak   (2007-04-13 14:30:00) [4]


> Сергей М.

Хамить обязательно? Раз в текстовом - значит так надо. И потом - меньше заморочек с подсчетом! Лично мое мнение по данному вопросу.


Сергей М.   (2007-04-13 11:51:00) [5]


> а если поле текстовое?


А какой же идиот хранит даннные типа "время" в строковом виде ?)


> Тогда как?


Тогда array of String - это же очевидно)


npu3pak   (2007-04-13 11:43:00) [6]


> Сергей М.

Хорошо, а если поле текстовое?
Тогда как?


Сергей М.   (2007-04-13 11:33:00) [7]


> npu3pak ©   (13.04.07 11:19) [15]


> только база на Accesse


Да хоть на Луне)

Query - это наследник TDataset, а TDataset'у по барабану, откуда взяты данные - хоть из Access'а, хоть с Луны


npu3pak   (2007-04-13 11:19:00) [8]


> Сергей М.

только база на Accesse, там немного иначе, вроде :(
с Adoquery так не канает :(


Плохиш   (2007-04-13 11:17:00) [9]


> npu3pak ©   (13.04.07 11:04) [11]
> Какие же вы трудные! Все надо разжевывать!

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


npu3pak   (2007-04-13 11:17:00) [10]

попробую


Сергей М.   (2007-04-13 11:12:00) [11]


> мне нужно считать данные из поля "окончание" в массив


var
Arr: array of TDatetime;

..

Query.Open;
with Query do
try
 Last;
 SetLength(Arr, RecordCount);
 First;
 while not EOF do begin
   Arr[i] := FieldByName('окончание').Value;
   Next;
 end;
finally
 Close;
end;


npu3pak   (2007-04-13 11:04:00) [12]

Какие же вы трудные! Все надо разжевывать!
Программа типа локера.

Есть база данных на accesse. В ней есть таблица Players. В это таблицы есть поля: Номер (значение, например 1), начало сеанса (по умолчанию --:--), время (время, на которое чел сел), Осталось (время окончания минус время начала, в минутах), окончание (время, во сколько окончится сеанс, --:--), цена, тариф, свободен (да/нет, boolean).

Так вот, при старте программы, когда появляется главная форма, мне нужно считать данные из поля "окончание" в массив, кол-во элементов которого равно кол-ву компов. База изначально не пустая. Там уже есть данные (По умолчанию, номера компов, 0 в полях цена и осталось, --:-- в полях "начало", "время", "окончание", поле "свободен" имеет значение "да"). Т.е. эти поля пустыми не бывают!


{RASkov}   (2007-04-13 09:28:00) [13]

> Нужно считать данные и все! Больше я ничего не хочу! :(

То как ты расписал свою проблему в [0] непонятно вообще.... а данные уже считаны. Если они, конечно, были...


Sergey13   (2007-04-13 09:27:00) [14]

> [8] npu3pak ©   (13.04.07 09:20)

Куда считать и зачем? Ты же открыл adoquery1 - это значит ты уже считал данные.


npu3pak   (2007-04-13 09:20:00) [15]


> {RASkov}

А можно просто сказать как сделать? Нужно считать данные и все! Больше я ничего не хочу! :(


{RASkov}   (2007-04-13 09:01:00) [16]

точно в армию....
Ну это про квадраты катать..... шары носить.

adoquery1.First;
while not adoquery1.eof do
begin
 memo1.lines.add(adoquery1.fieldbyname('name').asstring);
 adoquery1.next;
end;

> Но как только я закрываю форму. Отсчет прекращается :(

Ну НЕ на OnClose-же формы ты это делаешь.....


Сергей М.   (2007-04-13 08:57:00) [17]


> npu3pak ©   (13.04.07 08:55) [5]


> Мне просто нужно считать данные из таблицы (базы) access
> и все!


Что ж, благое желание)

И что ?

Что значит "не работает" ? Какие симптомы у "болезни" ?


npu3pak   (2007-04-13 08:55:00) [18]

Ребята! Вот только не надо глупых вопросов. Давайте по теме?! Я прошу помочь, а не читать нотации. У меня и так мало времени осталось. :(


> {RASkov}

если ты не заметил, то во 2 примере уже есть adoquery1.First; !!!


> Сергей М.

Мне просто нужно считать данные из таблицы (базы) access и все! Больше мне пока ничего не нужно. Можно "вычитание" не трогать! :)


{RASkov}   (2007-04-13 08:53:00) [19]

> У тебя удивительно странные для дипломника-программиста
> вопросы.

Точно... с такими вопросами в армию надо :)


Sergey13   (2007-04-13 08:48:00) [20]

Нифига не понял.

> Но как только я закрываю форму. Отсчет прекращается :(

У меня еще хуже: не запустил программу - она не работает. Приходится запускать. Может и тебе стоит попробовать не закрывать форму?

Зачем тут memo непонятно. Ты хочешь постоянно считать время? Зачем? Достаточно наверное раз в 5 (1,2,3,10 - по желанию) минут опрашивать время и сравнивать его с временем в текущих сеансах.

> Я пишу дипломную работу. Тема: Базы данных.

Ты будущий программист по образованию? У тебя удивительно странные для дипломника-программиста вопросы.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо