NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 15 - Diář s databází v C#

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Lukáš Novák:7.2.2020 11:55
  1. Jak ví metoda "zaznamy.Remo­ve(z);", který objekt má vymazat, když objekt "z" je z listu "nalezeno" ? Jestli jsem správně pochopil předešlé lekce, tak jsou v listech pouze "reference" na objekt v paměti. Ale to je jedno, jsou to dvě ruzné reference. Pokud tedy metoda "zaznamy.Remo­ve(z);" zjistí, že existuje v listu "zaznamy" reference na stejné místo v paměti, jako jí předaný parametr "z", tak odstraní tento záznam (resp. referenci) ?
  2. Když budu mít v listu "zaznamy" dvě reference na stejné místo v paměti smažou se obě dvě metodou "zaznamy.Remo­ve(z);" ?
  3. Kdyby v "nalezeno" byly klony (Lekce 4: Dále můžeme použít klonování, ale o tom zas až někdy jindy. ), pak by to tedy takto jednoduše nefungovalo a musel by se celý objekt nějak porovnat?
Editováno 7.2.2020 11:56
 
Odpovědět
7.2.2020 11:55
Avatar
Odpovídá na Lukáš Novák
Michal Štěpánek:7.2.2020 12:15

List "nalezene" je pouze seznam, nebo "výcuc" položek objektu "zaznamy". Tím pádem položky v listu "nalezene" korespondují s původní kolekcí.

Odpovědět
7.2.2020 12:15
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
David
Člen
Avatar
David:18.4.2020 14:41

Díky za článek. ;-)

 
Odpovědět
18.4.2020 14:41
Avatar
Fodo
Člen
Avatar
Odpovídá na Patrik Pastor
Fodo:4.5.2020 22:52

Záznam to uloží, ale nezobrazí ho, problém je v podmienke if v metode Databaza.Najdi­Zaznamy()

takto vyzera:

if (((podlaCasu) && (z.DatumACas == datum)) || ((!podlaCasu) && (z.DatumACas == datum.Date)))
        najdene.Add(z);

A takto treba prerobit:

if (((podlaCasu) && (z.DatumACas == datum)) || ((!podlaCasu) && (z.DatumACas.Date == datum.Date)))
        najdene.Add(z);

v druhej časti podmienky za z.DatumACas doplnené .Date. inač to porovnáva dátum, aj s časom

 
Odpovědět
4.5.2020 22:52
Avatar
Bohumír Bednařík:7.8.2020 12:44

Cvičení je pěkné, ale v kódu jsou podle mě následující chyby:

  1. V metode VyhledejZaznamy mi Visual Studio sděluje, že vlastnost Count nelze použít jako metodu (něměly by tedy za ní být závorky).
  2. Console.ReadKey() v hlavním programovém cyklu by podle mě mělo být až za ukončovací závorkou cyklu while, protože když přidávám nový záznam, musím stisknout enter dvakrát (je to matoucí). Naopak by měl být ještě navíc za vyhledáním záznamů, abych viděl, co se našlo a mohl to pak enterem odklepnout (ideálně by tam mělo být vypsáno něco jako pokračuj libovolnou klávesou. Respektive by to mohlo být přímo součástí dané metody.
  3. vyhledávání záznamů neumožňuje hledat záznamy dle času, tzn. vyžadovat zadání času je zbytečné, když mi to vždy vrátí všechny záznamy v daném dni. Chtělo by to tedy doplnit nějaký if nebo se uživatele zeptat, zda chce všechny záznamy v daném dni nebo jen pro konkrétní zadaný čas, ale to byl možná záměr, takže to možná není chyba..
  4. Do funkce pro přidávání záznamů by mohl být doplněn nějaký sort, aby záznamy seřadil dle data a času (ale to taky není chyba, ale jen nedostatek, pro který ještě nemáme na této úrovni znalosti - metodu Sort jsme si představili jen v základní verzi, bez možností její úpravy pro záznamy podobného typu, škoda, zajímalo by mě to, snad to bude v pozdějších lekcích).
 
Odpovědět
7.8.2020 12:44
Avatar
Odpovídá na michaela
Bohumír Bednařík:7.8.2020 13:05

Souhlasím, viz můj předchozí komentář. Console.ReadKey je tam špatně.

 
Odpovědět
7.8.2020 13:05
Avatar
Odpovídá na Jan Novák
Bohumír Bednařík:7.8.2020 13:21

Ne není tam zbytečně, protože se pak používá v hlavní programové smyčce na výpis záznamů pro daný den (dnešek/zítřek).

 
Odpovědět
7.8.2020 13:21
Avatar
Jiří Pivec
Člen
Avatar
Odpovídá na Bohumír Bednařík
Jiří Pivec:5.12.2021 22:24

Souhlasím, viz můj předchozí komentář. Console.ReadKey je tam špatně.

Console.ReadKey bych nechal určitě za Switchem (abych nemusel dávat Console.ReadKey do jednotlivých Case ve Switchi). Nicméně bych přidal nakonec do metody PridejZaznam ve třídě Diar:
Console.WriteLine("Záznam přidán, pokračujte jakoukoliv klávesou...");
Není tam potom to "prázdné" bouchnutí do klávesnice a vypadá to líp :)

Editováno 5.12.2021 22:25
Odpovědět
5.12.2021 22:24
„Kdo se umí smát sám sobě, má právo se smát všemu ostatnímu, co mu k smíchu připadá.“ J.W.
Avatar
Jiří Pivec
Člen
Avatar
Odpovídá na Jiří Pivec
Jiří Pivec:5.12.2021 22:32

Anebo lépe dát:
Console.WriteLine("Záznam přidán, pokračujte jakoukoliv klávesou...");
do Case '1' ve Switchi.

Odpovědět
5.12.2021 22:32
„Kdo se umí smát sám sobě, má právo se smát všemu ostatnímu, co mu k smíchu připadá.“ J.W.
Avatar
Jozef Vendel
Člen
Avatar
Jozef Vendel:22.3.2022 23:59

Caute, preco sa tu vyuziva slovo new ?

public void PridejZaznam(DateTime datumCas, string text)
{
    zaznamy.Add(new Zaznam(datumCas, text));
}
 
Odpovědět
22.3.2022 23:59
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 64.