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

laskov

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

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

BRADATA

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

laskov

  • Участник
  • *****
  • Публикации: 2801
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #2 -: Сеп 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 там обновява данните.
« Последна редакция: Сеп 08, 2017, 16:55 от laskov »
Активен

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

remotexx

  • Участник
  • *****
  • Публикации: 414
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #3 -: Сеп 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
« Последна редакция: Сеп 08, 2017, 20:29 от remotexx »
Активен

laskov

  • Участник
  • *****
  • Публикации: 2801
    • Профил
Re: SQL, MySQL, проблем с Refresh
« Отговор #4 -: Сеп 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() в заявката. Работи си както се очаква. Опреснява се.
« Последна редакция: Сеп 08, 2017, 21:57 от laskov »
Активен

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

remotexx

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

laskov

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

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

spec1a

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

spec1a

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

laskov

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

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

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