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

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Delphi 7 a pripojeni na MySQL server
« kdy: 09-04-2013, 07:25:13 »
Ahoj... uz delsi dobu se snazim rozchodit propojeni delphi 7 na MySQL server... Nedari a nedari.. Nasel jsem ze by se dalo pouzit http://zeos.firmos.at/ ale ani za boha se mi nevede to skompilovat pro me delphi.... zkousel jsem to nekolikrat a stejne nic . kdyz jsem je podle postupu na strankach tak mi to koncilo s chybou u Zcore70.bpl ze nelze vytvorit...

Nemel by nekdo nejaky odkaz nejlepe na video s pridanim techto komponent pro Delphi7 ???? Dekuji a s pozdravem

Offline mjseven

  • Mladík
  • **
  • Příspěvků: 63
  • Karma: 5
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #1 kdy: 09-04-2013, 10:07:43 »
Použít se určitě dá.

Nelze vytvořit... je poměrně široký pojem. Dej sem celý text chyby.


Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #2 kdy: 09-04-2013, 17:47:28 »
tak uz jsem pokrocil a tedka pri zmacknuti na compile all tak to vyhodi tohle


Tak uz jsem to asi udelal cely... super.... tak jeste najit nejaky example na nastaveni pripojeni :))
« Poslední změna: 09-04-2013, 17:56:18 od Kony »

Offline mjseven

  • Mladík
  • **
  • Příspěvků: 63
  • Karma: 5
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #3 kdy: 09-04-2013, 18:02:05 »
Zkus to nainstalovat podle postupu v tomhle vlákně
http://forum.delphi.cz/index.php/topic,5678.0.html


Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #4 kdy: 09-04-2013, 19:17:29 »
tak uz jsem postoupil a zacina me to fungoat, ale pokud to vse nastavim do DBGrid tak tam mam misto textu tohle

a u druhyho obrazku mam jak mam udelaou tabulku v MySQL

Nasel jsem ze je to nejaka ochrana Delphi pred velkyma prenosama po siti, aby ten text nebyl moc dlouhej, ale at zkousim ajk zkousim tak se mi to nevede ... nasel jsem ze se ma udelat

procedure TForm1.DBTableDataGetText(
  Sender: TField;
  var Text: String;
  DisplayText: Boolean);
begin
  Text := Copy(DBTableData.AsString, 1, 50);
end;

ale tohle mi nejde... urcite nemuzu mit DBTableData a potom mi to nezna AsString


Tak huraa. vyreseno.... kdyby nahodou nekdo potreboval.....


procedure TForm1.ZTable1loginGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
Text := Copy(ZTable1login.AsString, 1, 50);
end;


Ale tedka me zase nejde upravovat hodnoty v polich kde je memo .... :((
« Poslední změna: 09-04-2013, 21:05:32 od Kony »

Offline mjseven

  • Mladík
  • **
  • Příspěvků: 63
  • Karma: 5
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #5 kdy: 10-04-2013, 03:05:19 »
Jo tak to taky jde.
Jen bych změnil
Copy(ZTable1login.AsString, 1, 50) na Copy(Sender.AsString, 1, 50) nebudeš to mít závislé na pojmenování pole a považuji to za čistější přístup

Každopádně to chce upravit tabulku v DB


  • Login a Platba určitě nebudou typicky delší než nějakých 100 znaků, tak je zbytečné používat datový typ TEXT změň to na VARCHAR[100].
    [/size]Pokud se do pole Platba má ukládat číselný údaj o výši platby, tak určitě použij nějaký číselný typ.
  • [/size]Pro uložení Datumu změň datový typ pole Datum na Date, ale možná raději DateTime či TimeStamp. Určitě si datum neukládej jako string.
[/size]Celkem slušný přehled datových typů použitelných v MySQL najdeš na http://programujte.com/clanek/2007052903-prehled-datovych-typu-v-mysql/
Co se týče editace vykašlal bych se na editaci v gridu a vytvořil si druhý form, kde bych si z DB načetl vždy jen ten jeden záznam který chci právě upravovat a použil editační prvky DBEDit, DBMemo,....




Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #6 kdy: 10-04-2013, 06:22:08 »
OK OK .. diky moc za vycerpavajici odpovedi... a jeste jedna mala drobnost.. pokud tento program prenesu na dalsi PC kde neni nainstalovany delphi tak to njde spustit a konci to viz priloha... musi se spolcne s programem prenest jeste nejaka knihovna ???

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #7 kdy: 10-04-2013, 06:58:38 »
rekl bych ze mi prave chybi knihovna mysqllib.dll tak to denska vyzkousim....

Ale jeste jedn vec ohedne DBGridu... chtel bych aby pri kliknuti na titulek se sloupec seradil.. tato metoda me nefunguje, proste to vubec nic neudela...

procedure TForm1.DBGrid2TitleClick(Column: TColumn);
{$J+}
 const PreviousColumnIndex : integer = -1;
{$J-}
begin
  if DBGrid2.DataSource.DataSet is TCustomADODataSet then
  with TCustomADODataSet(DBGrid2.DataSource.DataSet) do
  begin
    try
      DBGrid2.Columns[PreviousColumnIndex].title.Font.Style :=
      DBGrid2.Columns[PreviousColumnIndex].title.Font.Style - [fsBold];
    except
    end;

    Column.title.Font.Style :=
    Column.title.Font.Style + [fsBold];
    PreviousColumnIndex := Column.Index;

    if (Pos(Column.Field.FieldName, Sort) = 1)
    and (Pos(' DESC', Sort)= 0) then
      Sort := Column.Field.FieldName + ' DESC'
    else
      Sort := Column.Field.FieldName + ' ASC';
  end;
end;

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #8 kdy: 10-04-2013, 08:29:42 »
OT
Mňa presvečili používať namiesto DBGrid VirtualTreeView. Neľutujem.
 
Výhody:
- je univerzálny. Použiješ ho ako tabuľku, strom... A nielen pri práci s DB
- máš všetko úplne pod kontrolou (obsah, typ a štýl písma, farby, rámčeky buniek...)
- môžeš tam vložiť všetko možné
- je rýchly a nemá obmedzený počet "záznamov"
 
Nevýhody
- trocha viac sa mu treba venovať
a) má veľa vlastností
b) musíš obslúžiť viac udalostí
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #9 kdy: 10-04-2013, 17:45:22 »
muzes me to trosku s tim popsat ???

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #11 kdy: 14-04-2013, 09:41:43 »
Dost tedka premyslim o zobrazovacim filtru do DBGrid...

v tabulce mam sloupec "soukrome" a chtel bych dat na button podminku.. pokud je u zaznamu v soukrome jednicka tak tento zaznam zobraz, pokud je tam 0 tak nezobrazuj

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #12 kdy: 14-04-2013, 11:14:23 »
V čom je problém. Urob presne to čo si napísal.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #13 kdy: 14-04-2013, 11:22:09 »
no nevim presne jak to slozit :))))

takze neco jako

if DBGrid1.Columns[5] := '0' then Records.disable


ale vim ze je to spatne... tak porad premyslim jak na to :)))

Colums 5 ke prave sloupec soukrome

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #14 kdy: 14-04-2013, 12:20:43 »
Doslovný preklad:
Citace
a chtel bych dat na button podminku
Takže v onButton
Citace
Dost tedka premyslim o zobrazovacim filtru do DBGrid...
DBGrid.Dataset.Filter := ' ';
Citace
v tabulce mam sloupec "soukrome" ..
DBGrid.Dataset.Filter := 'soukrome ';
Citace
pokud je u zaznamu v soukrome jednicka tak tento zaznam zobraz, pokud je tam 0
tak nezobrazuj
DBGrid.Dataset.Filter := 'soukrome  = 1';
Eto vsjo.
 
 
 
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #15 kdy: 14-04-2013, 12:25:45 »
tak tomuto se rika vysvetleni :)))) DEKUJI DEKUJI....

Jen toto nejde pouzit....

DBGrid1.Dataset.Filter vubec nezna... pokud dam tecku tak Dataset vubec nenabidne

zkusil jsem i

ZTable1.Filter := 'soukrome = 1';

to sice projde, ale kdyz zmacknu na button tak to nic neudela

protoze ZTable je pro me Dataset ne ???
« Poslední změna: 14-04-2013, 12:32:58 od Kony »

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #16 kdy: 14-04-2013, 12:48:26 »
tak tomuto se rika vysvetleni :)))) DEKUJI DEKUJI....

Jen toto nejde pouzit....

DBGrid1.Dataset.Filter vubec nezna... pokud dam tecku tak Dataset vubec nenabidne

zkusil jsem i

ZTable1.Filter := 'soukrome = 1';

to sice projde, ale kdyz zmacknu na button tak to nic neudela

protoze ZTable je pro me Dataset ne ???



Tak uz

  ZTable1.Filter := 'soukrome = ''1''';
  ZTable1.Filtered := true;


Jeste se chci zeptat.. .co je to za akci kdyz dvakrat poklikam na radek v DBGridu ??? Chci nastavit ze kdyz poklikam na nejaky radek tak aby se mi otevrel novy formular na upravu
« Poslední změna: 14-04-2013, 14:42:10 od Kony »

Offline mjseven

  • Mladík
  • **
  • Příspěvků: 63
  • Karma: 5
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #17 kdy: 14-04-2013, 23:09:48 »
2x klik = Double Click => OnDblClick

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #18 kdy: 15-04-2013, 09:44:19 »
Mám tam chybu. Ale na tú si mohol prísť. Má byť

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

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #19 kdy: 16-04-2013, 18:03:26 »
dobre dekuji vam vsem za cenne rady... editaci jsem vyresil pomoc druheho formu.... a pristup do DBGridu jsem zakazal, dal sjem ho jen read only... ale ted nastava otazka... jak pridat zaznam ??? a jeste jedna... kdyz mam vic radku v DBGridu, tak mi posun koleckem mysi funguje jen na aktualni obrazovce,, jako by nechtela scrolovat na dalsi zaznamy, ktery prave nejdou videt a jsou pod okrajem dbgridu

Takze pridani zaznamu mam vyreseny, na to jsem prisel a jeste to kolecko mysi aby slo

zkousel jsem tohle http://delphi.about.com/cs/adptips2002/a/bltip1102_3.htm ale nemuzu na DBGridu najit OnMessage
« Poslední změna: 16-04-2013, 19:13:29 od Kony »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #20 kdy: 17-04-2013, 08:22:07 »
S tým posúvaním obsahu kolieskom myšou je v D7 problém. Čosi som vytiahol z archívu.
Kód: Delphi [Vybrat]
  1.  Posun posuvníka a tabuľky zároveňtype   TMyDBGrid = class(TCustomDBGrid)  private    procedure WMVScroll(var Msg: TWMVScroll); message WM_VSCROLL;  ...  end;... procedure TMyDBGrid.WMVScroll(var Msg: TWMVScroll);begin if (Msg.ScrollCode=SB_THUMBTRACK)and(DataSource.DataSet.RecordCount<65536)   then       DataSource.DataSet.RecNo:=Word(msg.Pos)   else       inherited;end;

a
Kód: Delphi [Vybrat]
  1.  Skrolovanie myšou v DBGridalso possible with applicationevents from Henk SchreijFrom the tab 'Additional' put a (invisible) Component ApplicationEvents om the main-form. In the OnMessage event put:  procedure TForm1.ApplicationEvents1Message( var Msg: tagMSG; var Handled: Boolean); begin   if (Msg.message = WM_MOUSEWHEEL) and (Screen.ActiveForm.ActiveControl is TCustomDBGrid)  then begin   Msg.message:= WM_KEYDOWN;   Msg.lParam:= 0;    if Msg.wParam < 0 then    Msg.wParam:= VK_DOWN  else    Msg.wParam:= VK_UP;  end;end;   This bugfix will work in your whole Application.
Skús ten VirtualStringTree. Nebudeš mať také problémy.
 
Dočerta, prečo mi to likviduje všetky medzery?
« Poslední změna: 17-04-2013, 08:24:23 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #21 kdy: 18-04-2013, 20:46:09 »
Tak uz snad posledni otazka.....


Mam sloupec v DBGridu "cislo" (2013-04-18) a cislo2 (2013-04-30) obe cisla jsou datumy.... dokazu odstranit pomlcky, takze mi vznikne cely cislo.... a to kdyz odectu tak bude nejaky vysledek... a potreboval bych aby vysledek pokud bude mensi jak 1000 tak aby se radek v DBGridu zabarvil do modra... pokud bude mensi jak 500 tak do zluta.. a pokud bude mensi jak 100 tak do cerveny.... je nejaka moznost jak toto docilit ???samozrejme myslim tim radek kde se tohoto pravidla tyka...

Offline mjseven

  • Mladík
  • **
  • Příspěvků: 63
  • Karma: 5
    • Verze Delphi: D7, D2006, XE2, Lazarus
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #22 kdy: 18-04-2013, 23:44:15 »
Jasně, jde to.

Musíš si napsat vlastní vykreslení buněk, což uděláš v ošetření události OnDrawColumnCell

Odečtení času bych osobně řešil v SQL dotazu a vracel si rovnou identifikaci barvy, nebo lépe řetězec (clBlue, ...) reprezentující barvu pro příslušný řádek.



Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #23 kdy: 19-04-2013, 08:06:18 »
Dátum máš mať vždy a všade uložený ako dátum (Date/DateTime). Ináč to je veľká chyba! Dátumy sa dajú priamo sčítať a odčítať + iné priame funkcie na prácu s dátumom.

Spôsob/formát zobrazenia dátumu je úplne iná vec. Ak nechceš vyhodiť DBGrid, tak použi riešenie podľa mjseven.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #24 kdy: 06-05-2013, 19:02:24 »
A mohl bych nejaky blizsi vysvetleni jak na to prijit teda pomoci SQL dotazu atd ????Ja bych rad to vsechno ulozil jako datum, ale uklada se mi to porad ve tvaru ROK/den/Mesic..... a to je mazec... chtel bych to den.mesic.rok


A jeste jedna otazka.... potrebuju abych mel na formulari nejaky CheckBox a RadioButton.... jak nastavit spravne MySQL aby me to dobre cetlo... potrebuju it jednu vec a to rozbalovaci menu a tam mit hodnoty, ktery muzu vybrat (PayPal, BU, Hotove, atd) a potom dalsi vec kde vyberu CheckBox kde vyberu polozky a to se mi ulozilo jejich zaskrknuti a potom RadioButton kde to bude to samy, zase aby se ulozilo jak to mam nastaveny...

Zacinam byt totalne nastvanej.. pridal jsem do MySQL dalsi polozku a snazim se ji pridat na formular a ani zaboha nemuzu docilit toho aby to editoval a ulozil, proste nic me to nepovoli do toho napsat.... masakr.. uz jsem snad vyzkousel vsehno

Tak ja uz fakt nevim... jeste jsem zkousel udelat uuplne cely propojeni s SQL databazi znovu aby tam byli vsechny radky tabulky a tedka kdyz neco v programu zmenim, tak se to nezmeni v SQL databazi..... vzdycky to natahne udaj z databaze, ale nepovoli ho zmenit
« Poslední změna: 07-05-2013, 07:14:02 od Kony »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #25 kdy: 07-05-2013, 10:20:13 »
Citace
A mohl bych nejaky blizsi vysvetleni jak na to prijit teda pomoci SQL dotazu atd?Ja bych rad to vsechno ulozil jako datum, ale uklada se mi to porad ve tvaru ROK/den/Mesic..... a to je mazec... chtel bych to den.mesic.rok

V DB musíš mať pole definované ako Date - DateTime + DateStamp či ako sa to volá.
Dátum sa v DB vždy ukladá ako celé číslo! Otázka zobrazenia je čosi iné. Záleží to na nastavení systému a komponentov pre prácu s DB
A
jeste jedna otazka.... potrebuju abych mel na formulari nejaky CheckBox a RadioButton.... jak nastavit spravne MySQL aby me to dobre cetlo... potrebuju it jednu vec a to rozbalovaci menu
Citace
Musíš používať komponenty pre prácu s DB. Poznáš to podľa toho, že v názve majú DB - TDBedit, TDBLookupComboX a pod. Ale RadioButton vo verzii DB neexistuje. Buď si miesto neho vymyslíš niečo iné, alebo si napíšeš funkciu na jeho obsluhu.
Tak ja uz fakt nevim... jeste jsem zkousel udelat uuplne cely propojeni s SQL databazi znovu aby tam byli vsechny radky tabulky a tedka kdyz neco v programu zmenim, tak se to nezmeni v SQL databazi..... vzdycky to natahne udaj z databaze, ale nepovoli ho zmenit
Citace
MySQL nepoznám, ale základné pravidlá sú pre všetky DB rovnaké- zmena údajov Edit/Insert- uloženie údajov Post- odvolanie zmien CancelPozor v DB komponentoch na voľbu AutoEdit. Osobne ju vždy vypínam.Dobre si pozri vlastnosti v DBDataset-e. Aj pre jednotlivé polia! To je preberané jednotlivými komponentami určenými na priamu prácu s údajmi ako TDBEdit. A potom si prejdi aj TDataSource.Samostatne k tomu si musíš dobre preštudovať každý komponent pre priamu prácu s údajmi.


Poznámka k formátovaniu textu.
Už ma nebaví zakaždým opravovať formátovanie. Pri písaní to mám dobre a po uložení to nepoznám. Vyhádzané všetky riadkovania + iné lahôdky. A to mám čerstvo preinštalovaný OS a momentálne používam maxthon!
« Poslední změna: 07-05-2013, 10:23:37 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #26 kdy: 08-05-2013, 12:23:07 »
Tak uz jsem tak nejak zase postopuil a zacalo me to fungovat jak ma...

ALE :))))

mam DBGrid kde dvojklikem na radek se otevre Form na editaci tohoto radku... vyplnim vsechno potrebne a mam jeste udelany aby pri zavreni tohoto Formu se hodil fokus na prvni polozku, aby se to poslalo do DBGridu, ale pokud na DBGrid nekliknu na dalsi radek tak se mi udaje neposlou do SQL databaze... zjistil jsem, ze kdyz Form s editaci zavru tak DBGrid vlastne zustava v editacnim modu a jakmile vyberu jinaci radek tak se to hnedka ulozi... tak bych se chtel zeptat, jak udelat aby se mi pri zavreni Form(editace) hodil fokus treba na prvni radek DBGridu.... zkousel jsem to takto
hlavni FOrm kde je DBGrid2 je Form1 a editacni formular je Form6

na Close.Form6
Form1.DBGrid2.column[1].row[1].setfocus

ale to okamzite hlasi chybu ze nezna DBGrid2 na formu6

pak jsem zkusil

Form1.DBGrid2.SelectedRows.Items[1];

ale taky konec s chybou "List index out of Bounds (1)"

a jeste jedna vec :

kdyz vyvoalvam vytvoreni noveho zaznamu pomoci :

  Form1.Ztable1.Append;
  Form7.ShowModal;

mam na formulari ID a to je DBEdit a potreboval bych abych nejakym prikazm zjistil jaky je posledni cislo v SQL a automaticky se mi pridalo +1
« Poslední změna: 08-05-2013, 13:14:22 od Kony »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #27 kdy: 08-05-2013, 13:18:16 »
Citace
zjistil jsem, ze kdyz Form s editaci zavru tak DBGrid vlastne zustava v editacnim modu
A použil si tam Post?
Vypol si AutoEdit?


Ja sa v tabuľke pohybujem  Dataset.Locate(...); DBGrid na to bude automaticky reagovať.

Citace
mam na formulari ID a to je DBEdit a potreboval bych abych nejakym prikazm zjistil jaky je posledni cislo v SQL a automaticky se mi pridalo +1

O ID sa musí starať samotná DB. Každá iná technika povedie len k problémom. Ale mySQL nepoznám. Neporadím.
« Poslední změna: 08-05-2013, 13:21:46 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #28 kdy: 08-05-2013, 13:25:29 »
jak to myslis pouzit Post ???

Pokud vypnu v DBGridu AutoEdit, tak me potom nejde editovat zaznamy

Takze Post uz jsem vyresil :))))) super....

Ted uz jen poresit aby se mi upravovalo spravne ID..... at zkousim co zkousim tak pri pridani zaznamu je vzdy policko ID prazdny a musim ho doplnit manualne

Nebo proste nacist posledni cislo v radku DBGrid ve sloupci ID(sloupec1) a pricist k tomu +1
« Poslední změna: 08-05-2013, 14:15:36 od Kony »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2720
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:Delphi 7 a pripojeni na MySQL server
« Odpověď #29 kdy: 08-05-2013, 14:51:57 »
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ť.

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.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Plnoletý
  • ***
  • Příspěvků: 128
  • 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ů: 566
  • 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ů: 128
  • 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ů: 566
  • 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ů: 1734
  • Karma: 72
    • 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ů: 128
  • 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ů: 2720
  • Karma: 26
    • 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ů: 566
  • 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ů: 2720
  • Karma: 26
    • 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ů: 128
  • 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ů: 2720
  • Karma: 26
    • 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ů: 128
  • 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 oxo

  • Guru
  • *****
  • Příspěvků: 673
  • Karma: 37
    • 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ů: 128
  • 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: