Forum Delphi.cz

Delphi => FireDAC => Téma založeno: Stanislav Hruška 12-12-2019, 14:41:03

Název: TFDQuery.Open - '' is not a valid integer value
Přispěvatel: Stanislav Hruška 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.
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: Stanislav Hruška 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
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: miroB 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.
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: Stanislav Hruška 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
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.
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: vandrovnik 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'
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: vandrovnik 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.
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: Stanislav Hruška 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.
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: vandrovnik 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 :-)
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: Stanislav Hruška 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:

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ý.
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: pf1957 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.

Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: Stanislav Hruška 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)
Název: Re:TFDQuery.Open - '' is not a valid integer value
Přispěvatel: pf1957 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