![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Считывание данных из таблицы (базы) [D7, XP]
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 - по желанию) минут опрашивать время и сравнивать его с временем в текущих сеансах.
> Я пишу дипломную работу. Тема: Базы данных.
Ты будущий программист по образованию? У тебя удивительно странные для дипломника-программиста вопросы.