Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];

Вниз

Считывание данных из таблицы (базы)   Найти похожие ветки 

 
npu3pak ©   (2007-04-13 08:40) [0]

Доброго времени суток!
Я пишу дипломную работу. Тема: Базы данных. Программа для компьютерного клуба.
У меня такая проблема:
Когда я ввожу данные в базу - все нормально. Отнимается время, которое осталось.
Но как только я закрываю форму. Отсчет прекращается :(
Так вот: как считать данные из базы, поместить их в массив и продолжить отнимать время, которое осталось.
Я уже пробовал через 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;


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


 
{RASkov}   (2007-04-13 08:47) [1]

adoquery1.First; Перед циклом вызови....


 
Сергей М. ©   (2007-04-13 08:47) [2]


> Отнимается


Кем и у кого оно отнимается ?) Кто посмел ?)

Может таки вычитается, а не "отнимается" ?)


> так не работает


А где тут "отнимание" ? В упор не вижу ...


 
Sergey13 ©   (2007-04-13 08:48) [3]

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

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

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

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

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

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


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

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

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


 
npu3pak ©   (2007-04-13 08:55) [5]

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


> {RASkov}

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


> Сергей М.

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


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


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


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


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

И что ?

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


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

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

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

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

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


 
npu3pak ©   (2007-04-13 09:20) [8]


> {RASkov}

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


 
Sergey13 ©   (2007-04-13 09:27) [9]

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

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


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

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

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


 
npu3pak ©   (2007-04-13 11:04) [11]

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

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

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


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


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


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:17) [13]

попробую


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


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

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


 
npu3pak ©   (2007-04-13 11:19) [15]


> Сергей М.

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


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


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


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


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

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


 
npu3pak ©   (2007-04-13 11:43) [17]


> Сергей М.

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


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


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


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


> Тогда как?


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


 
npu3pak ©   (2007-04-13 14:30) [19]


> Сергей М.

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


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

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

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


 
npu3pak ©   (2007-04-14 10:57) [21]


> Сергей М.


> 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;


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


 
Anatoly Podgoretsky ©   (2007-04-14 17:09) [22]

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

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.044 c
15-1176012403
Pazitron_Brain
2007-04-08 10:06
2007.05.06
Подскажите Jazz музыканта


2-1176626953
ppcumax
2007-04-15 12:49
2007.05.06
Как создать динамические переменные?


6-1162736558
SHEI'TI
2006-11-05 17:22
2007.05.06
Отключить картинки в WebBrowser


15-1176187069
Calibr
2007-04-10 10:37
2007.05.06
Температура ЦПУ


15-1175969605
cyborg
2007-04-07 22:13
2007.05.06
Однако!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский