Autor Téma: Delphi 7 a pripojeni na MySQL server  (Přečteno 14222 krát)

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 160
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #30 kdy: 08-05-2013, 18:48:03 »
tak hledam jak hledam a nikde jsem to nenasel... proste musim ID zadavat rucne .....

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 568
  • Karma: 23
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #31 kdy: 08-05-2013, 20:25:43 »
Ako som písal predtým. ID Ti MUSÍ generovať samotná DB. Pozri si návod. Nikdy naň nesmieš siahať. Rozbiješ si integritu údajov a budeš plakať.

To není úplně pravda, v některých případech se může i to ID generovat. Třeba pokud se použije GUID (v MSSQL uniqueidentifier), tak je jedno, jestli tu hodnotu vygeneruje db nebo se vygeneruje v aplikaci. Pravděpodobnost, že by se vygenerovaly stejné hodnoty je prakticky nulová.

Poznám len access a FireBird.
- Prvý si to robí automaticky.
- Druhý má generátory (Generator) a spúšte (Trigger). Robí sa to pomocou nich.

v MSSQL a MySQL se to taky umí generovat automaticky, na mssql se tomu říká identity, v mysql něco jako auto_increment

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 160
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #32 kdy: 08-05-2013, 20:28:05 »
ano auto_increment samozrejme v MySQL je, ale pokud jsem to nastavil tak mi to stejne negenonerovalo... kdyz jsem al pridat zazna tak policko ID byo prazdny

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 568
  • Karma: 23
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #33 kdy: 08-05-2013, 21:23:17 »
ano auto_increment samozrejme v MySQL je, ale pokud jsem to nastavil tak mi to stejne negenonerovalo... kdyz jsem al pridat zazna tak policko ID byo prazdny

Tak si to asi dělal blbě :-). Sloupec by měl mít nastaveno auto_increment, při insertu bys do toho sloupce předpokládám neměl nic vkládat.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1866
  • Karma: 91
    • Verze Delphi: D2007, XE3, DX10
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #34 kdy: 09-05-2013, 10:06:43 »
Tak si to asi dělal blbě :-). Sloupec by měl mít nastaveno auto_increment, při insertu bys do toho sloupce předpokládám neměl nic vkládat.
On nejspis zapasi s tim, ze Dataset nepodporuje zpetne cteni hodnot z databaze pri post a ze je to ponechano na tvurcich konkretnich konektivit pro konkretni DB. Mam dojem, ze u ZEOS by to s MySQL melo fungovat, protoze tam loudi na DB last_insert_id a ze je treba loudit si berou z metadat.
Ale to je teorie, jak je to v praxi nevim.

Ja prave testuju trial Any-Dac, kdyz je EMB koupil a zaclenil do Delphi jako Fire-Dac, ze bychom na ne presli protoze potrebujeme podporu vice DB.
A ikdyz jsou na pohled pomerne konzistenti, tak zrovna ty identity sloupce ve spojeni s gridem funguji proti MSSQL a MySQL, ale proti PostgreSQL ne. Prestoze se to vygenerovane ID da ziskat tusim 3 zpusoby, tak komponenty nedelaji ani jeden, pritom SELECT LASTVAL() je prima obdoba to select last_insert_id u MySQL...

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 160
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #35 kdy: 06-06-2013, 14:15:33 »
resim tedka filtrovani zaznamu....

pokud pouziju

Kód: [Vybrat]
ZTable1.Filter := 'login = ''bracha''';
funguje to super, ale ja potrebuju aby ten login cetl z editu, takze zkousim

Kód: [Vybrat]
ZTable1.Filter := 'login = '+DBEdit3.Text+'';
a to me DBGrid nezobrazi ani jeden zaznam.. tak uz nevim

Takze pokud pouziju

Kód: [Vybrat]
ZTable1.Filter :='login like ''*' + DBEdit3.Text + '*''';
Tak uz to funguje, ale zase pocita s tim ze vypise vsechny loginy co tento text obsahuji... to znamena kdyz budu mit login bracha2 a ja budu mit v DBEdit3.Text "bracha" tak vypise i ten druhej, ale aspon takto ze to funguje :)))
« Poslední změna: 06-06-2013, 14:39:18 od Kony »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #36 kdy: 06-06-2013, 15:49:41 »
Správne má byť

ZTable1.Filter := 'login = '+DBEdit3.Text;

Ale i tak to má fungovať. Otestoval si si, čo Ti vracia DBEdit3.Text? Asi niečo iné než očakávaš.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 568
  • Karma: 23
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #37 kdy: 06-06-2013, 20:39:25 »
Správne má byť

ZTable1.Filter := 'login = '+DBEdit3.Text;

spíš
Kód: Delphi [Vybrat]
  1. 'login = ''' + neco + '''';
, ne? Prostě ten parametr mít v uvozovkách. Jinak tohle filtrování je AFAIK na klientovi, lepší je filtrovat už na straně DB. Tj poslat SQL dotaz s filtrovací podmínkou.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #38 kdy: 08-06-2013, 11:56:35 »
Nemôžem si pomôcť, musím mať pripomienku  ;D

Najprv súhlasím s Mi.Chal, že je lepšie poslať SQL.

Ide mi v
Citace
ZTable1.Filter := 'login = '+DBEdit3.Text;
o použitie DBEdit. To je podľa mňa veľmi nešťastné riešenie a bude spôsobovať problémy.  DBEdit je určený na manipuláciu s údajmi v DB a nemal by sa používať na iný účel!

Môžeš použiť Edit, ale to tiež nie je správne orechové. Správne máš použiť DBLookupComboBox alebo DBComboBox. Tak sa Ti nemôže stať, že

- použiješ neexistujúcu hodnotu
- nedôjde k nechcenej zmene údaja

Ak by si chcel napísať, že to nejde, tak máš zlú logiku a mal by si to prerobiť.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 160
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #39 kdy: 08-06-2013, 12:04:51 »
a jakym stylem bych posilal ten dotaz do MySQL ???? kdyz mam formular.... na nem tlacitko, DBEdit... a chci aby kdyz zmacknu tlacitko aby se otevrelo novy okno formulare kde bude DBGrid a v nem vyfiltrovany udaje .... a jeste kdyz nenajde udaj v DB tak aby to bylo prazdny.....

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2996
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #40 kdy: 08-06-2013, 13:26:50 »
???


To snáď žartuješ.
DBGrid máš napojený na nejaký DataSource a ten má DataSet a ten zas SQLText


DataSet.SQLText := 'SELECT nieco FROM z niecoho WHERE mojepole =' + DBEdit3.Text;
...
DataSet.Open;


Hm, keď sa vráti prázdny dataset nemal by si o tom informovať užívateľa a daný formulár vôbec nezobrazovať?

Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 160
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #41 kdy: 31-07-2013, 18:14:52 »
mohl bych se prosim jeste na neco zeptat ????

pouzivam prikaz do databaze

Kód: [Vybrat]
ZTable1.SortedFields := 'cislo';
tohle se me seradi od nejmensiho k nejvetsimu..... je nejaka moznost jak to otocit, aby to bylo od nejvetsiho k nejmensimu ?? mam to v DBGridu a potrebuju aby nahore byli nejvetsi cisla

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 707
  • Karma: 42
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #42 kdy: 31-07-2013, 21:09:12 »
Jen takový pokus bez záruky (tvoje komponenty nepoužívám):

Kód: [Vybrat]
ZTable1.SortedFields := 'cislo DESC';
Embarcadero Technology Partner, juj. Člen Lazarus týmu, oj.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 160
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #43 kdy: 31-07-2013, 21:30:49 »
uuuplne presne ono... diiiiky moc

 

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í:
Datový typ v Delphi, který má True a False: