Autor Téma: zjisteni nejvyssiho cisla v DBGridu  (Přečteno 730 krát)

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 239
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #15 kdy: 08-06-2018, 08:15:05 »
nevim co presne odpovedet. ID polozka je cislo.. toto cislo neni primarnim klicem. Nekolik cisel se vynechava.. to znamena ze jsou zaznamy treba od 15-30, potom od 32-60 atd... neni to posloupnost cisel od 1 nahoru.. je to tim, ze kdyz se zaznam vymaze, tak se uz to cislo nepouzije a pokracuje se porad dal a dal...

Offline vandrovnik

  • Hrdina
  • ****
  • Příspěvků: 488
  • Karma: 36
    • Verze Delphi: 10.2
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #16 kdy: 08-06-2018, 08:38:19 »
nevim co presne odpovedet. ID polozka je cislo.. toto cislo neni primarnim klicem. Nekolik cisel se vynechava.. to znamena ze jsou zaznamy treba od 15-30, potom od 32-60 atd... neni to posloupnost cisel od 1 nahoru.. je to tim, ze kdyz se zaznam vymaze, tak se uz to cislo nepouzije a pokracuje se porad dal a dal...

Spíš jde o to, jestli tohle ID má jednoznačně identifikovat každou položku. Pokud ano, bylo by lepší, když by to byl primární klíč - ten nemusí mít souvislou číselnou řadu.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3526
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #17 kdy: 08-06-2018, 09:00:52 »
Mňa (nás) skôr zaujíma význam, úloha tohto čísla. Ak slúži na prepojenie dvoch záznamov z dvoch tabuliek, tak to musí byť primárny/cudzí kľúč na vytvorenie prepojenia tabuliek. Preto sa DB volajú relačnými DB.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2275
  • Karma: 123
    • Verze Delphi: D2007, XE3, DX10
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #18 kdy: 08-06-2018, 09:15:23 »
nevim co presne odpovedet. ID polozka je cislo.. toto cislo neni primarnim klicem. Nekolik cisel se vynechava.. to znamena ze jsou zaznamy treba od 15-30, potom od 32-60 atd... neni to posloupnost cisel od 1 nahoru.. je to tim, ze kdyz se zaznam vymaze, tak se uz to cislo nepouzije a pokracuje se porad dal a dal...
To je prece vlastnost kazdeho umeleho jednoslozkoveho PK, ktery je zalozen na generovani rady cisel.
- pouzivat prirozeny PK se zavrzenihodna metoda
- znacit ID neco jineho nez PK je mimo ustalene konvence

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 239
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #19 kdy: 08-06-2018, 10:52:35 »
Primarni klic ale mam u jinyho cisla, tohle je jen dodatkove cislo, ktere ano pouzivam na dalsi propojeni s dalsimi funkcemi. Proto si myslim ze lehci by bylo najit nejvetsi cislo a to vypsat do toho labelu..

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3526
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #20 kdy: 08-06-2018, 12:03:59 »
Citace
Primarni klic ale mam u jinyho cisla, tohle je jen dodatkove cislo, ktere ano pouzivam na dalsi propojeni s dalsimi funkcemi. Proto si myslim ze lehci by bylo najit nejvetsi cislo a to vypsat do toho labelu..
Kurníkšopa. Rozumieš  o čom Ti píšeme?
  • Primárny kľúč ma jedinú úlohu. Slúži na pripojenie sa k tejto tabuľke. Presnejšie ku konkrétnemu záznamu. Nikdy naň nesmieš siahať z programu. Myslím tým jeho zmenu či výmaz. Môžeš ho jedine používať!!!
  • A to dodatkové číslo podľa Tvojich informácii má byť práve ten primárny kľúč generovaný DB. Tá zaistí jeho jedinečnosť a index nad ním.
  • Užívateľ nesmie ani len tušiť, že Ty niekde používaš nejaký primárny kľúč. Nikdy!!!
Ako to tu už naznačil Baláž. Asi nemáš základné vedomosti o DB. Alebo máš, aj z prv uvedeného predpokladu, debilne navrhnutú DB. Lenže Ty si tak skúpi na informácie, že sa na Teba nechytám ani ja. A to už je čo povedať >:(
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3526
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #21 kdy: 08-06-2018, 12:06:26 »
Hm, urob grafickú schému svojej DB a daj ju sem.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline miroB

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 14
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #22 kdy: 08-06-2018, 12:20:42 »
nevim co presne odpovedet ..
Napríklad :
- akú verziu Delphi používaš pre tento projekt (OK, vychádzajme z toho, že vo vizitke máš D7)
- akú konektivitu používaš (v časoch D7 som najčastejšie používal na pripojenie ADO, teda TAdoConnection)
- kto generuje tvoje ID data, máš nad tým kontrolu, alebo je to niekto tretí a ty ID len pasívne používaš ?
- o koľkých riadkoch je orientačne reč? 1 000, 100 000, cez milión? Od toho záležia časy výpočtov. (Ak nevadí vyhľadávanie MAX v cykle, asi nejde o viac ako tisícky údajov.. )
« Poslední změna: 08-06-2018, 12:31:13 od Miroslav Baláž »

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 239
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #23 kdy: 08-06-2018, 12:42:22 »
Mam delphi 7
Pouzivam Zeos
Data do databaze vytvarim pouze ja
Cca do 100 zaznamu

Offline miroB

  • Hrdina
  • ****
  • Příspěvků: 376
  • Karma: 14
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #24 kdy: 08-06-2018, 12:59:12 »
Teraz je dosť jasnejšie.
Pre 100 záznamov určite nevadia žiadne cykly a ani sa netreba učiť SQL príkazy.
V tom prípade má pravdu Delfin aj s navrhnutým riešením.
Ale dalo by sa použiť aj TZQuery asi nejak takto:
Kód: Delphi [Vybrat]
  1. Procedure TForm1.Create;
  2. begin
  3. ..
  4. ..
  5. ZQuery1.Connection := ZConnection1;
  6. ZQuery1.SQL.Text := 'SELECT MAX( ID ) FROM mojaTabulka';
  7. ..
  8. end;
  9. ..
  10. Procedure TForm1.Button1Click(Sender:TObject);
  11. begin
  12.   ZQuery1.Active := True;
  13.   Label1.Caption := ZQuery.Fields[ 0 ].AsString;
  14.   ZQuery1.Active := False;
  15. end;

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 381
  • Karma: 5
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #25 kdy: 08-06-2018, 13:16:10 »
Musím se doznat, že jsem plně nepochopil smysl tohoto vlákna. O čem to vlastně je? Pochopil jsem to tak, že se mu nechce dělat vlastní funkci s algoritmem pro hledání nejvyššího čísla či řazení ve sloupci a tak se ptá, zda něco takového je již předdefinováno. ???

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3526
  • Karma: 35
    • Verze Delphi: XE7 professional
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #26 kdy: 08-06-2018, 13:42:00 »
Ale ak sa to ID bude generovať automaticky (generátorom či DB), tak nikdy nebude potrebovať jeho skutočnú hodnotu.
Ak má v danej tabuľke definovaný primárny kľúč, čo má, tak to ID NEPOTREBUJE.
Citace
Musím se doznat, že jsem plně nepochopil smysl tohoto vlákna. O čem to vlastně je?
To neviem ani ja :)
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline našinec

  • Hrdina
  • ****
  • Příspěvků: 381
  • Karma: 5
Re:zjisteni nejvyssiho cisla v DBGridu
« Odpověď #27 kdy: 08-06-2018, 13:55:57 »
Také existují DBGridy třetích stran, které určitě tuto funkci mají. Zkus hledat třeba zde:
https://torry.net/quicksearchd.php?String=DBGrid&Title=Yes. Dle mého tato funkce však není nic těžkého. Nadefinuješ rozsah(sloupec) a pak porovnáváš.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: