Автор Тема: SQL, MySQL, проблем с Refresh  (Прочетена 5243 пъти)

laskov

  • Напреднали
  • *****
  • Публикации: 3170
    • Профил
SQL, MySQL, проблем с Refresh
« -: Sep 08, 2017, 11:04 »
Билетна система. Касите за билети добавят нови записи в базата данни. На входовете билетите, които са минали, се маркират като използвани. Приложение показва обобщена информация за отпечатаните и за използваните билети.
Приложението го правя на Lazarus, използвайки вградената му SQL поддръжка.
Искам информацията да се обновява на всеки 10 секунди, но това не се случва. Refresh не прави нищо. Предполагам, че приложението си мисли, че щом не е променяло данните, значи те са си същите.
Може ли някой да ме насочи накъде да търся?
TSQLQuery
Refresh
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

BRADATA

  • Напреднали
  • *****
  • Публикации: 833
  • Distribution: Slackware/Mint/CentOS
  • Window Manager: console/KDE/LXDE
    • Профил
    • WWW
Re: SQL, MySQL, проблем с Refresh
« Отговор #1 -: Sep 08, 2017, 11:33 »
Не съм се занимавал с Паскал от сума време, ама да питам - изпълняваш ли някакъв селект за да видиш какво се случва с данните в базата или чакаш на някакви готови функции да правят това?
Дай някаква част от кода дето прави това за да го видим...
Като прегледах refresh документацията - не мисля, че е това, което ти трябва...
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3170
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #2 -: Sep 08, 2017, 12:08 »
Цитат
QTmp.SQL.Text := 'SELECT COALESCE(COUNT(ID),0) as count from main where used_where=0 and sold_where IN (3,6);';
QTmp.Active:=True;
if QTmp.BOF and QTmp.EOF
    then MemoTickets.Lines.Append('Няма продажби.')
    else MemoTickets.Lines.Append('     брой : '+ QTmp.FieldByName('count').AsString);

Имам таймер, който на всеки 10 секунди прави MemoTickets.Lines.Clear и QTmp.Refresh

Това беше първият вариант с различни QTmp1, QTmp2 и QTmp3, които се рефрешват. После пробвах с
 
Цитат
Процедура
begin
  QTmp.Active:=False;
  QTmp.SQL.Text := 'Заявка 1;';
  QTmp.Active:=True;
  // Пиша в Мемо полето

  QTmp.Active:=False;
  QTmp.SQL.Text := 'Заявка 2;';
  QTmp.Active:=True;
  // Пиша в Мемо полето
end;
и таймерът стартира процедурата, резултатът от което се оказа същият - не се показват актуални данни.

Стартирам повторно програмата, второто копие показва новите данни, но също не се обновява. Първото копие си показва данните при стартирането си.

Add1: Таймерът работи. Пробвах и замяната му с бутон.
Add2: Заявките, изпълнени през phpMyAdmin работят. Цъкането върху Refresh там обновява данните.
« Последна редакция: Sep 08, 2017, 16:55 от laskov »
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

remotexx

  • Напреднали
  • *****
  • Публикации: 3732
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #3 -: Sep 08, 2017, 20:02 »
Дай повече инфо...
това QTmp какво е (т.е. какъв тип) ..защото си писал за TSQLQuery пък си дал препратка към TDataSet.Refresh(), и там е явно, че  TSQLQuery няма Refresh а има RefreshSQL

т.е. ако може дай цялото парче кoд там OnTimer или както се казва процедурата (е може да махнеш излишните неща дето не се отнасят към заявката)

за каква точно БД става дума?

щото според документацията на TDataSet.Refresh:

Refresh posts any pending edits, and refetches the data in the dataset from the underlying database, and attempts to reposition the cursor on the same record as it was. This operation is not supported by all datasets, and should be used with care. The repositioning may not always succeed, in which case the cursor will be positioned on the first record in the dataset. This is in particular true for unidirectional datasets. Calling Refresh results in the triggering of the BeforeRefresh and AfterRefresh events.

т.е. искаш да кажеш сигурен си че не е поради неправилно навръзване на (ГУИ) компонентите, нито напр. поради писане в неправилното Мемо - в такива моменти аз повече вярвам на дебъгер-а (щото съм имал случаи да пиша в неправилния компонент /на друг таб или невидим/ или пък ако е ГУИ да забравя го вържа или ако да то не към правилния data set)

Най-добре е през дебъгера и стъпка по стъпка - защото ако хвърля Exception пак няма да ти обнови ГУИ-то (а както знаем това е едно от предимствата на конзолата - винаги ще ти го изпише, а ГУИ-то не /макар че според ББ това й е предимството/)

смятам доволно добре е обяснено по-долу (изпуснали са само някой екстремни варианти където се налага ползване на... напр. read_committed или isc_tpb_read_committed и т.н. или пък uncommitted)
http://wiki.lazarus.freepascal.org/SqlDBHowto
« Последна редакция: Sep 08, 2017, 20:29 от remotexx »
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3170
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #4 -: Sep 08, 2017, 21:47 »
QTmp : TSQLQuery;
"2. TSQLQuery is a #fcl.db.TDataset descendent which can be used to view and manipulate the result of an SQL select query...."
Това е кодът.
Сървър Slackware, MariaDB 10.0.31, InnoDb таблица,
Клиент Windows XP, libmysql.dll версия 5.5
... сетих се да пробвам нещо...

Хм, вмъкнах едно curtime() в заявката. Работи си както се очаква. Опреснява се.
« Последна редакция: Sep 08, 2017, 21:57 от laskov »
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

remotexx

  • Напреднали
  • *****
  • Публикации: 3732
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #5 -: Sep 09, 2017, 01:32 »
т.е. да разбираме ли, че проблемът е решен... или просто се премести на друго място, т.е. по към сървъра?
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3170
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #6 -: Sep 10, 2017, 10:24 »
Още не знам къде е проблема. Имам идеи за тестове, но сега нямам време. Последно, числата си стоят едни и същи, часовникът върви :)
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

spec1a

  • Напреднали
  • *****
  • Публикации: 4371
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #7 -: Sep 10, 2017, 11:10 »
   Възможно е проблема да е на ниво база данни (MariaDB), поради някаква причина
транзакциите не се commit -ват.
   Някакъв бъг ?
   
Активен

spec1a

  • Напреднали
  • *****
  • Публикации: 4371
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #8 -: Sep 10, 2017, 11:23 »
   Може да има интересна информация и в съотв. логове (MariaDB).
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3170
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #9 -: Sep 13, 2017, 16:42 »
Инсталирах външна библиотека, алтернативна на вградената и нещата заработиха.
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Refresh rate на конзолата?
Настройка на програми
Agent_SMITH 2 4002 Последна публикация Mar 14, 2004, 11:53
от Agent_SMITH
Проблем с refresh rate
Настройка на хардуер
gogo_hr 5 4693 Последна публикация Oct 19, 2004, 16:48
от Филип Бонев
Проблем с настройката на Refresh rate
Настройка на програми
NightHunter 1 3620 Последна публикация Dec 15, 2005, 15:46
от gvend
Refresh rate
Настройка на хардуер
khalderon 1 3640 Последна публикация Mar 03, 2006, 17:08
от
KDE -refresh rate
Настройка на програми
ilia007 2 3569 Последна публикация Mar 13, 2006, 00:16
от ilia007