Autor Téma: TFDQuery.Open - '' is not a valid integer value  (Přečteno 2385 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7174
  • Karma: 44
    • Verze Delphi: W10 + D11.1
TFDQuery.Open - '' is not a valid integer value
« kdy: 12-12-2019, 14:41:03 »
Prvý krát mám staticky vytvorený FDQuery na formulári. Kvôli DB komponentu. Pri pokuse o jeho otvorenie dostávam danú chybu. Pravdu povediac, som z toho veľmi prekvapený. Pri dynamicky vytváraných sa nikdy nič také nestalo. Netuším kde je chyba. V DesignTime execute prebehne.
Má niekto nejaký tip o čo môže ísť? Ak áno, sem s ním.
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7174
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #1 kdy: 12-12-2019, 16:27:31 »
Hm, chybu musím hľadať inde. Vyskakuje mi na doplnenom riadku
Kód: [Vybrat]
  dsServiceParameters.Enabled := not fdqrServiceParameters.IsEmpty;dsServiceParameters je DataSource napojený na fdqrServiceParameters
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline miroB

  • Guru
  • *****
  • Příspěvků: 594
  • Karma: 17
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #2 kdy: 12-12-2019, 17:26:15 »
Hm, chybu musím hľadať inde. Vyskakuje mi na doplnenom riadku
Kód: [Vybrat]
  dsServiceParameters.Enabled := not fdqrServiceParameters.IsEmpty;dsServiceParameters je DataSource napojený na fdqrServiceParameters
Stano predstav si, že by sa tvojim dotazom niekto začal zaoberať.
Ty si dáš kávičku, prídeš na to, že chyba je niekde úplne inde. Alebo sa nestala.. ako je teraz na Slovensku populárne :).
Nikto ďalší nemá šancu zistiť to, okrem teba, lebo problém riadne a pozorne nepopíšeš.
No a za pár hodín zverejníš opravu, či abort.
Určite je bezpečnejšie neodpovedať ti skôr, ako za x hodín, alebo dokonca dní.
Potom ťa mrzí, že na fóre nenájdeš odpoveď obratom.
« Poslední změna: 12-12-2019, 17:28:41 od miroB »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7174
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #3 kdy: 12-12-2019, 17:45:05 »
Ale ja som už nervózny z toho, že mi vyskakujú takéto nezmysly a nemôžem sa pohnúť ďalej. Nakoniec sa naštvem a urobím to bez DB komponentov. Len načo ich potom mám? Možnože som pri nich nepochopil ich podstatu a tým aj ich fungovanie.
.
Teraz k problému. Mám TDBAdvLookupComboBox + query + DataSource. Ak je DataSource.Enabled = False, tak sa formulár spustí. Ak je True, tak sa ani nespustí a skončím na danej chybe.
Ak mám na začiatku False a potom programovo nastavím True, tak opäť skončím na tej chybe. Pritom v DesignTime sa to tvári OK. Vypíše sa mi hodnota prvého poľa.
Ja potom tuho rozmýšľam
  • či som niečo primitívne dosral, alebo
  • je to chyba v komponente, alebo
  • v koncepcii môjho riešenia problému
Takéto moje príspevky sú potom z nasledujúcej nervozity. A čakať niekoľko dní, že sa to uleží, neprichádza do úvahy. Lebo stojím s celým programom.
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1510
  • Karma: 52
    • Verze Delphi: 11.3
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #4 kdy: 12-12-2019, 18:12:48 »
Příklad pro tDbLookupCombobox:

DataSource - odkazuje na tDataSource, který odkazuje na tIBDataSet, který pracuje třeba s fakturou
DataField - odkazuje na pole, do kterého se u těch faktur zapisuje např. ID bankovního spojení (BankovniSpojeniId:integer)
ListSource - odkazuje na tDataSource, který odkazuje na tIBQuery, který vrací číselník (ID:integer, BankovniSpojeni varchar(50))
KeyField - obsahuje 'ID'
ListField - obsahuje 'BankovniSpojeni'

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1510
  • Karma: 52
    • Verze Delphi: 11.3
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #5 kdy: 12-12-2019, 18:13:38 »
A typicky s tím pracuju tak, že nejprve otevřu to tIBQuery, které vrací číselník, a pak ten dataset, co pracuje s fakturami.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7174
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #6 kdy: 12-12-2019, 18:27:14 »
Tak som to pochopil aj ja. Lenže to niekedy funguje ináč než je moja predstava. Alebo vôbec. Zaujal ma Tvoj druhý príspevok. Najprv otvorím... Ja to mám nateraz tak, že pracujem s tabuľkami a tie sú otvorené v kuse. V prípade potreby použijem filter.
Skúsim to urobiť na Tvoj spôsob. Možno pochodím.
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Padawan
  • ******
  • Příspěvků: 1510
  • Karma: 52
    • Verze Delphi: 11.3
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #7 kdy: 12-12-2019, 18:31:11 »
Já to chtěl mít tak, že uživatel může dělat víc faktur apod. zároveň. Tabulky nepoužívám nikde, každý formulář má svůj dataset pro hlavičku, další dataset pro detaily, pomocí WHERE si tahá jen data toho dokladu, se kterým pracuje. Ty výběry z číselníků (bankovní spojení, země apod.) mám pomocí frame, protože je využívám na vícero formulářích. Většinou pak v OnCreate formuláře otevřu číselníky a v OnShow otevřu dataset pro fakturu apod. Čímž netvrdím, že to je jediný možný postup :-)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7174
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #8 kdy: 12-12-2019, 19:00:46 »
Ja to mám jednoduchšie a základy mi už problém nerobia.
Tak som to urobil znova a ono to funguje! Nie som si vedomý toho, že by som mal niečo ináč ako predtým. Snáď sa to nepopsuje.
.
Ja som mal celý základ programu funkčný. Už len bolo potrebné urobiť finálnu zostavu. Užívateľ nemal čas.
Medzitým som asi pred 3-4 mesiacmi urobil nejaké zmeny. Dá sa v diskusiách nájsť presný dátum:

  • Nahodil som DB komponenty - najväčšia a základná zmena
  • Rozdelil som kód tak, aby som mal hlúpe formuláre. V podstate som dal triedy do samostatných jednotiek
  • Urobil automatické načítavanie DB komponentov na vykonanie základnej kontroly
  • Všetky zmeny/úpravy robím tak, aby som tam už nemal žiadne resty. Čiže to má byť definitívna podoba. Opravujem všetky chyby. A že ich tam je požehnane. A aké. Až sa mi niekedy nechce veriť, že som mohol napísať takú kravinu. Nechápem ako to mohlo fungovať :o .  V niektorých prípadoch prerábam skoro všetko
  • A to všetko mi ide neskutočne pomaly. Až mi je niekedy na zaplakanie
Už som v podstate na poslednom (z  existujúcich) formulári na zadávanie vstupných údajov. A môžem pristúpiť k výpočtom. Musím ich skontrolovať, lebo som urobil nejaké zmeny v tabuľkách. Rád by som to po tých rokoch konečne spojazdnil.
Samozrejme, že tam je ešte kopec roboty, ale už by bol použiteľný.
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3506
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #9 kdy: 13-12-2019, 09:34:29 »
Tak som to urobil znova a ono to funguje! Nie som si vedomý toho, že by som mal niečo ináč ako predtým.
Hm, to se ti posledni dobou stava nejak prilis casto, ne?

Nejspis to bude souviset s tim prechodem na DB awared komponenty, kde je vetsina logiky skryta a ty ji ovlivnujes jen parametrizaci pres properties, coz je neprehledne a navic ten property editor je dost nachylny k neumyslnym zmenam...

Ale mam dojem, ze pouzivas nejaky VCS, tusim Git, takze bys mel pri kazdem commitu projit vsechny zmeny, jestli sis nekde neco nezbabral a kdyz se ti objevi divna chyba, tak bys mel porovnat soucasnou verzi s posledni fungujici v repository.


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 7174
  • Karma: 44
    • Verze Delphi: W10 + D11.1
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #10 kdy: 13-12-2019, 12:42:51 »

Citace
Hm, to se ti posledni dobou stava nejak prilis casto, ne?
Som si toho veľmi dobre vedomý. Verte mi, že mi to vôbec nie je príjemné.
Citace
jestli sis nekde neco nezbabral a kdyz se ti objevi divna chyba,
Vždy len ja niekde niečo dobabrem. Už som nechcel k tomu nič písať, lebo :-[  Ja som mal na tom komponente zavesenú udalosť OnChange. Pri kopírovaní som tomu nevenoval pozornosť a nevložil som to ako poznámku. Jediný riadok. No čo sa tam môže stať, keď len priraďujem "niečomu" hodnotu. A odrazu bolo správanie sa akési divné.
Nerád to tu píšem, ale asi začínam starnúť ;D . Musím sa vrátiť k technike, ktorú spomínal aj miroB. Napríklad napíšem príspevok, ale neodošlem ho. Už sa mi to v minulosti viackrát vyplatilo. Viem o tom. Problém je v tom aby som to tak robil. Prinútil sa k tomu.
Alebo si kúpim psa 8)
Win11 64b, Delphi 11.1, FireBird 4.01
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3506
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:TFDQuery.Open - '' is not a valid integer value
« Odpověď #11 kdy: 13-12-2019, 19:12:05 »
Alebo si kúpim psa 8)
Pes neni spatny, pokud s nim budes muset chodit na prochazky, ale jinak na doma je spravny partak Žako Kongo - tomu se musis venovat nekolilk hodin denne. Akorat se pri dobre peci doziva 60+ let, takze je treba mit i zodpovedne dedice  ;D