Archív konference Delphi

Zpět na výběr roku archívu nebo přejít na fulltextové vyhledávání v konferenci.

Tvorba helpu

[*] Ondrej Krajicek <krajicek(zv)promedia(tec)cz> - 9.3.1999 21:21:12

Na HtmlHelp si jeste pockame, ten jejich viewer je dost nevychytany,
jinak se s tim dela docela dobre, navic do CHM jde vrazit klasicky i
grafika a vsechno.

s pozdravem,
Ondrej Krajicek

---------------------------------------------------------------
Microsoft Windows: Testing on humans.
---------------------------------------------------------------

-----P�vodn� zpr�va-----
Od: Jan �ebel�k <honza(zv)haes(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 9. b�ezna 1999 16:55
P�edm�t: Re: Tvorba helpu


FOREHELP (puvodne RAD Pack pro Delphi 1)
mi prisel hodne dobry, ma i verzi pro Win32 (ale uz je to drazsi...)

Psat .rtf ve Wordu - na to ja trpelivost nemam, to bych s tim seknul
jeste drive, nez bych poradne zacal.

Ale nastupuje nam era html helpu, s tim jsem se dosud vyrovnat
nestacil.
Ma s tim nekdo zkusenosti? Kratce a vystizne?

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes(tec)cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 931
=========================================
----------
> Odes�latel: Libor Klicnik <libor_klicnik(zv)aisoft(tec)cz>
> Komu: delphi-l(zv)fwd(tec)cz
> P�edm�t: Tvorba helpu
> Datum: 9. b�ezna 1999 12:41
>
> Zdravim vsechny,
> mam dotaz ohledne tvorby helpu pro D2. Pouzivam prg. Help&Manual,
ale
> neni to ono... Nemate nekdo zkusenost s nejakym jinym softwarem,
> pripadne
> uvitam i odkaz na nejake stranky
> Diky za odpoved
> Libor


Tvorba napovedy

[*] Ondrej Krajicek <krajicek(zv)promedia(tec)cz> - 9.3.1999 21:22:50

Kdyz jsme tak u toho, jaky je rozdil mezi HCW a HCRTF ?
ok

-----P�vodn� zpr�va-----
Od: Zbysek Hlinka <zhlinka(zv)login(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 9. b�ezna 1999 18:21
P�edm�t: Re: Tvorba napovedy


Dobry den, Slovacko, regional wrote:

> Potrebujete co nejstarsi verzi M$ Wordu. Oni neustale meni format
RTF, jak
> se jim hodi. Tim nechci rici, ze neexistuje nic lepsiho :) M. Kucera
>
Mno, ke vsem temto dotazum - nebylo by rozumnejsi stahnout si
od M$ novejsi verzi programu Hcrtf.exe? :-)


S pozdravem

Zbysek Hlinka
E-mail: zhlinka(zv)login(tec)cz, localizator(zv)localizator.com
Tel.: 02/795 29 56; GSM: 0603 551 282
Krystofova 1016, 149 00 Praha 4
CZ


Dynamicka pole

[*] Ing. Jaroslav K�e�ek - 9.3.1999 21:44:15

V helpu se pise:
Dynamic arrays are reference-counted and will automatically free themselves
when there are no longer any references to them.

1. Podle me neni potreba dynamicka pole uvolnovat z pameti.
2. Jakym zpusobem jste ji uvolnoval? Me to napriklad FreeMem vyhazuje chybu
vzdy. V prvnim pripade Access violation, v druhe Invalid Pointer Operation.

Jaroslav Krecek
**********************************************
Ing. Jaroslav K�e�ek
-------------------------------------------------------------
GRAFEX - software �it� na m�ru
- harware pro Va�e pot�eby
-------------------------------------------------------------
http://web.iol(tec)cz/grafex
mailto:grafex(zv)iol(tec)cz
-------------------------------------------------------------
tel + SMS: +420.603.226103
tel + fax: +420.327.761992
**********************************************


-----P�vodn� zpr�va-----
Od: Ing. Zdenek Sraier <sraierzd(zv)czn(tec)cz>
Komu: konference DELPHI <delphi-l(zv)fwd(tec)cz>
Datum: 9. b�ezna 1999 19:16
P�edm�t: Dynamicka pole


>Nazdarek,
>
>chtel bych se zeptat, jestli a jake mate zkusenosti s dynamickymi poli.
>Specielne s dvojrozmernymi - jsem dnes narazil na problem s polem:
>
>|var
>| b: array of array of integer;
>|*****
>|setLength(b,delka,2);
>
>Byla to lokalni promnenna formulare a pri jejim uvolnovani pri close
>jsem porad dostaval "Invalid pointer operation".
>
>Kdyz jsem pole nahradil definici:
>
>|var
>| b: array of array [1..2] of integer;
>|*****
>|setLength(b,delka);
>
>fungovalo to dobre (D4P-SP3).
>
>S pozdravem Zdenek
>
>--------------------------------------- E-Mail -------------------------
>| Zdenek Sraier | sraierzd(zv)czn(tec)cz (jednou denne) |
>| o__o | zdenek.sraier(zv)sms.paegas(tec)cz (max 160 zn. kdykoliv) |
>| ( o o) |--------------------- WWW --------------------------|
>| (. .) | http://users(tec)czn(tec)cz/~sraierzd/ |
>------------------------------------------------------------------------
>| WWW Stranky Potapecske (SP) HTTP://www.byll(tec)cz/scuba/ |
>------------------------------------------------------------------------
>

elementarny problem s C/S

[*] Jaro <jaro(zv)sinea(tec)cz> - 9.3.1999 22:06:55


>[Viktor] "Pokud klient nahodi transakci a zatuhne, server udela
>rollback a zamky uvolni" - no tak jak to, ze to neni to same? Kdyz to
>udelam ja jako programator pomoci zamku, tak to neni totez, jako kdyz to
>udela dodany soft v DB serveru? Mozna neni, ale v cem je tedy ten rozdil?
>
Nikdy to nebude to same, protoze nikdy nemuze jeden klient vedet,
co ve stejnem okamziku cini dalsi klienti. Zatimco server to vi.
Samotny klient (bez nastroju serveru) nemuze sam o sobe nikdy
spolehlive a dokonale zajistit integritu dat.

Jaro


elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 07:16:34

Mirun wrote:

> Prihodim dalsi: mam programek pro evidenci pacientu, ve kterem
> se
> >pisi k jednotlivym diagnozam textove zpravy, ktere se ukladaji do databaze.
> >Takova zprava se pise cca pul hodiny az hodinu a proste neni mozne, aby ji
> >najednou psalo vice lidi. Tzn. potrebuju zaznam zamknout (POZOR nejedna se
> o
> >zaznam na databazi, ale v podstate o nejaky flag!).
>
> Jelikoz neznam pozadi teto aplikace, vezmu to tak, jak je to napsano.
> Je nepravdepodobne, ze na stejnem oddeleni bude psat k danemu pacientovi a

Kde si vzal ta oddeleni? Ty tam nejsou. Ale pro nazornost budiz :-)

> dane diagnoze zpravu vice jak 1 clovek. Pokud je 10 oddeleni, a kazde z nich
> je nuceno se k diagnoze vyjadrit, bylo by dle me lepsi udelat dalsi tabulku,
> kde ma kazde oddeleni svuj zaznam. Konecna zprava tak jak si ji uvedl Ty,
> bude nejspis vypadat takto (vsechno v jednom memu)
>
> 5.5.1999
> Chirurgie
> bla bla, bla
>
> 5.5.1999
> Nosni
> bla bla bla
>
> Kdyz to udelas tak jak jsem se zminil (tabulkou) bude vypadat takto
> Datum Text Memo
> 5.5.1999 Chirurgie blablabla
> 5.5.1999 Nosni blablabla
>
> Odpadne tim nutnost zaznam zamykat (pouzil bych zpusob uvedeny v prvnim
> odstavci), navic je pak pro uzivatele jednosussi si nechat zjistit pouze
> udaje z chirurgie, aniz by musel hledat v textu, kde co kdo napsal, a lecos
> prehlednout.

Ta zprava spise vypada takto:

5.5.1999
Pedagog - blablabla

Psycholog - blablabla

Specialni pedagog - blablabla

Kazdy pripise sve stanovisko, pricemz vychazi z textu napsaneho predchozim
odbornikem (a taky jej obcas treba i meni).Tzn. asi by nebylo zrovna dvakrat
idealni vychazet z predchoziho textu a po dopsani zjistit, ze ten puvodni text
je najednou jiny ne? Me toto pripada v tomto pripade vhodnejsi.

> >Dalsi jednoduchy priklad: zakaznik si preje, aby jeden zaznam mohl v jednom
> >okamziku editovat pouze jeden clovek.
>
> Tady nechapu proc , zakaznik je nejspis silny egoista :-)))

Dejme tomu proto, ze to vyzaduji vnitrni potreby (smernice) firmy. Ja netvrdim,
ze je to vselek, pouze ze nekdy je to vyhodnejsi, nez umoznit upravovat jeden
zaznam nekolika uzivatelum najednou. Taky dost zalezi na poctu uzivatelu atd.

> Zaverem chci upozornit, ze se nad danym problemem pouze zamyslim, protoze me
> zajima, v praxi programuji pouze 1 uzivatelske aplikace. Takze je mozne ze
> nektere moje nazory budou mozna hodne vzdalene realnemu zivotu. Proto je
> berte s rezervou.

Ja myslim, ze od toho je diskuse. Kdyz si na vsechno budeme souhlasne pokyvovat,
tak se daleko nedostaneme :-)

Mac
--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

Tisk dlouhych grafu

[*] Roman <roman.banar.fei(zv)vsb(tec)cz> - 10.3.1999 07:29:07

> Potrebuju z D3 tisknout dlouhe grafy na nekonecny (traktorovy ) papir. Ma s
> tim prosim nekdo nejake zkusenosti, je to vubec mozne z windows tisknout
> grafy na nekonecny papir ?

mno, ja tisknu na traktor tak, ze natisknu vzdy jenom radek a nic
vic, takze muzu toho potisknout kolik chci, aniz by se strankovalo,
coz je asi to co ty potrebujes, jenze ja tisknu znakove...
predpokladam, ze pro grafy bys musel dodelat tisk grafiky /tj.
<ESC> bla bla bla :-)/

takhle to vypada:

var Myprinter : TRawPrinter;
oldprinter : TPrinter;
begin
MyPrinter:=TRawPrinter.Create;
oldprinter:=setprinter(MyPrinter);
try
myprinter.startraw;
myprinter.write('khsdhskhkshdksd');
myprinter.writeln;
myprinter.endraw;
finally
setprinter(oldprinter);
myprinter.free;
end
end;


a tady je ten unit:

unit Rawprinter;

interface
uses printers,windows;

type TRawprinter =class(TPrinter)
public
dc2 : HDC;
procedure startraw;
procedure endraw;
procedure write(const s : string);
procedure writeln;
end;

implementation

uses sysutils,forms;

function AbortProc(Prn: HDC; Error: Integer): Bool; stdcall;
begin
Application.ProcessMessages;
Result := not Printer.Aborted;
end;

type
TPrinterDevice = class
Driver, Device, Port: String;
constructor Create(ADriver, ADevice, APort: PChar);
function IsEqual(ADriver, ADevice, APort: PChar): Boolean;
end;

constructor TPrinterDevice.Create(ADriver, ADevice, APort: PChar);
begin
inherited Create;
Driver := ADriver;
Device := ADevice;
Port := APort;
end;

function TPrinterDevice.IsEqual(ADriver, ADevice, APort: PChar):
Boolean;
begin Result:=(Device=ADevice) and (Port=APort);
end;

procedure TRawprinter.startraw;
var
CTitle: array[0..31] of Char;
CMode : Array[0..4] of char;
DocInfo: TDocInfo;
r : integer;
begin
StrPLCopy(CTitle, Title, SizeOf(CTitle) - 1);
StrPCopy(CMode, 'RAW');
FillChar(DocInfo, SizeOf(DocInfo), 0);
with DocInfo do
begin
cbSize := SizeOf(DocInfo);
lpszDocName := CTitle;
lpszOutput := nil;
lpszDatatype :=CMode;
end;
with TPrinterDevice(Printers.Objects[PrinterIndex]) do
begin
DC2 := CreateDC(PChar(Driver), PChar(Device), PChar(Port), nil);
end;
SetAbortProc(dc2, AbortProc);
r:=StartDoc(dc2, DocInfo);
end;

procedure TRawprinter.endraw;
var r : integer;
begin
r:=windows.enddoc(dc2);
end;

type passrec = packed record
l : word;
s : Array[0..255] of char;
end;
var pass : Passrec;

procedure TRawprinter.write(const s : string);
begin
pass.l:=length(s);
strpcopy(pass.s,s);
escape(dc2,PASSTHROUGH,0,(zv)pass,nil);
end;

procedure TRawprinter.writeln;
begin
pass.l:=2;
strpcopy(pass.s,#13#10);
escape(dc2,PASSTHROUGH,0,(zv)pass,nil);
end;

end.
roman


elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 07:45:58

Jaro wrote:

> >Pokial je to mozne, tak by som napriklad uprednostnil deklarativnu
> integritu
> >(nie triggre), najlepsie ak by ju bolo mozne zachytit v relacnom diagrame
> >(co robia triggre tam asi velmi tazko znazornite).
> -----
> Vzdyt prave trigry slouzi rovnez pro udrzeni integrity. Jak to chces jinak
> hlidat?
>
> UFF.

Treba pomoci Constraints (deklarativni integritou). Ja napr. nemam jedinny
trigger a integritu neporusi :-).

Hozna Sebelik psal o serveru jako o samostatne aplikaci. Jasne, souhlasim. Je
fajn pouzivat triggery a bussinnes rules na strane serveru. Samozrejme budu
oponovat (ale jen trosku). Tento pristup je nesikovny v pripade, ze databazovy
server je 'za hory, za lesy' a neni k nemu elektronicke cesty. V tom pripade je
nutne kazdou upravu delat rucne na serveru (resp. napsat nejaky script na upravu
databaze). Pokud pouzivam server pouze jako 'neinteligenti skladiste dat', ktere
mi zarucuje pouze integritu a bezpecnost dat (relativni), tak muze byt nekdy
vyhodnejsi implementovat logiku do klienta (snazsi udrzba - mozna na ukor
rychlosti).

Jeste bych se vratil k triggerum. Jejich nevyhoda - mala rychlost (alespon na MS
SQL - dokonce o tom i pisi v dokumentaci a to je co rict ;-). Dalsi nevyhoda u
MS SQL (a taky duvod proc osobne triggery temer nevyuzivam) je, ze ma pouze tri
triggery (Insert, Update a Delete). Nejsem si ted jist jestli se treba Delete
trigger spousti PRED zmazanim nebo PO smazani zaznamu. A v tom je ten problem -
nekdy potrebuju provest nejakou operaci PRED a jinou az PO smazani zaznamu.
Proste implementace triggeru v MS SQL neni IMHO dostatecna.

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

mySQL ODBC a Delphi 4

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 07:52:18

eL wrote:

> No to uz je zbytecne placani. Problem je vyresen a je se holt musim
> rozhodnout zda se vratim ke staremu nebo zaplatim spustu penez za neco co
> temer nevyuziju.
> Pokud jsem to spravne pochopil neexistuje ani upgrade. Takze 5000 je v
> kazdem pripade v haji.

Nebo muzes pouzit ADO a ODBC provider pro ADO a to by melo taky slapat (bez
BDE). I kdyz asi lepsi je pouzit primo nejake prime ODBC drivery jak psal Petr
Zahradik.

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

Inno Setup

[*] Riedel Petr <Petr.Riedel(zv)ipbpojistovna(tec)cz> - 10.3.1999 08:00:56

Dobry den,

potrebuji pomoci, zde jiz zminovaneho, Inno Setupu vytvorit instalaci
BDE verze 5, ale nikde jsem nenasel, ktere soubory jsou nezbytne nutne
distribuovat ( treba jen pro paradox ) a co vsechno zapsat do registru.
Poradte, prosim.

S pozdravem

Petr Riedel


elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 08:06:40



jk(zv)tzus(tec)cz wrote:

> 1/ Pokud pouziju zamykani na urovni radku (na Oracle select ... for update)
> tak je jen na me proc to delam.

No jo, jenze to treba na MS SQL neni :-(((, takze nastupuji 'berlicky'.

> 2/ Pokud chci pouzit nejake virtualni zamky nebo semafory tak je opet lepsi
> snazit se vyuzit primo vlastnosti SQL serveru (pokud to umi nebo ma takove
> rozsireni napr. DBMS_LOCK na Oracle) nez vymyslet najake rozsireni
> aplikacniho serveru nebo pouzivat DCOM omezeny pouze na Win32.

Souhlas, ale zase velmi specificka vec.

> BTW k predchozi diskuzi - automaticky audit zmen v databazi ma Oracle.

Grrrr, prejdu na Oracle ;-). Je taky free jako MS SQL (resp. MS Data Engine) ???
;-)

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Jaro <jaro(zv)sinea(tec)cz> - 10.3.1999 08:07:54

>uprednostnujem deklarativnu integritu (pokial to ide), pretoze je ovela
>prehladnejsia a jednoduchsia ako programovat triggery.
>
>Erik Salaj

A co myslis tou deklarativnuu integritou?
Mas-li na mysli definici primarnich a cizich klicu, tak to je jen prvni
krok. Ale to samo nestaci. Do konecne integrity to ma jeste hodne daleko.
Az triggery "vdechnou" databazi "zivot" a umozni, aby se o svou integritu
starala hlavne sama. Databaze na databazovem stroji neni jen hromada
volne lozenych dat. Je to "stroj", je to inteligentni system.
(teda alespon pokud ho vytvori inteligent.)

Dam jednoduchy priklad. Musis zajistit, ze nesmazes master,
pokud k tomuto zaznamu existuji detaily. Jak jinak, nez na triggeru
BeforeDelete dotazem SELECT Detail Count(*) WHERE IdMaster = idDetail
Podobne to plati pro ciselniky atd.

Slozite se to muze zdat, ale neni to tak hrozne. Rozhodne to v konecnem
efektu da
mnohem mene programovani a starani se na strane klienta.

Jeste k te prehlednosti a jednoduchosti.
Mel jsem moznost vyzkouset databazovy modelar RKS ceskeho puvodu a mohu jej
plne doporucit. Veskerou relecni integritu vcetne vygenorovani vsech
potrebnych
trigeru to vytvori za vas.
O jednoduchem a prehlednem grafickem navrhu ani nemluve. Je to fakt parada.
Takze pokud touzite po jednoduchem a prehlednem projetu, poridte si za
"mrzky"
cesky peniz RKS.
Autori jsou nekde na webu, ale nevim, zda muzu uvest zdroj, aby to nebylo
brano jako
nepripustna reklama.

Jaro



Jar

Chyba pri zavreni Find dialogu...

[*] Fryz, Zdenek <fryz(zv)dcb(tec)cz> - 10.3.1999 08:17:35

ahoj

mam nasledujici problem:

ve sve aplikaci pouzivam TFindDialog - pri zavreni tohoto dialogu at uz
tlacitkem 'Storno', nebo 'Close' v titulku okna
se objevi hlaska 'Access violation at address 0042E389 in module ...' .
Pouzivam D3.

umi nekdo poradit ?

diky

Zdenek Fryz


Info v BIOSu

[*] Martin Lasevic <vyvoj(zv)atlascon(tec)cz> - 10.3.1999 08:50:10

V tom pripade, bych prosil, kdyby nekdo vedel, jak a kde to zjistit, at mi poradi.

Diky
Martin Lasevic

-----Puvodni zprava-----
Od: Dalibor Toman [SMTP:dtoman(zv)fortech(tec)cz]
Odeslano: 9. boezna 1999 16:18
Komu: delphi-l(zv)fwd(tec)cz
Poedmit: Re: Info v BIOSu

>resim problem, jak dostat v D3 z BIOSu informaci o tom, je-li PeCka
notebook nebo
>stolni poeitae.
>

a to je opravdu nekde v BIOSu ? Urcite to neni standardni zalezitost....


Zdravi
D. Toman

elementarny problem s C/S

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 10.3.1999 08:56:58

> -----Original Message-----
> From: Martin Kubecka [mailto:martin.kubecka(zv)amenit(tec)cz]
> Sent: Wednesday, March 10, 1999 7:46 AM
> To: delphi-l(zv)fwd(tec)cz
> Subject: Re: elementarny problem s C/S

> Treba pomoci Constraints (deklarativni integritou). Ja napr.
> nemam jedinny
> trigger a integritu neporusi :-).

Pomoci constraints nelze popsat vsechno.

> Hozna Sebelik psal o serveru jako o samostatne aplikaci.
> Jasne, souhlasim. Je
> fajn pouzivat triggery a bussinnes rules na strane serveru.
> Samozrejme budu
> oponovat (ale jen trosku). Tento pristup je nesikovny v
> pripade, ze databazovy
> server je 'za hory, za lesy' a neni k nemu elektronicke
> cesty. V tom pripade je

V tom pripade to neni Client Server aplikace

> nutne kazdou upravu delat rucne na serveru (resp. napsat
> nejaky script na upravu
> databaze). Pokud pouzivam server pouze jako 'neinteligenti
> skladiste dat', ktere
> mi zarucuje pouze integritu a bezpecnost dat (relativni), tak
> muze byt nekdy
> vyhodnejsi implementovat logiku do klienta (snazsi udrzba -
> mozna na ukor
> rychlosti).

Neni zadny klient. Je to samostatny program na porizovani dat.

>
> Jeste bych se vratil k triggerum. Jejich nevyhoda - mala
> rychlost (alespon na MS
> SQL - dokonce o tom i pisi v dokumentaci a to je co rict ;-).
> Dalsi nevyhoda u
> MS SQL (a taky duvod proc osobne triggery temer nevyuzivam)
> je, ze ma pouze tri
> triggery (Insert, Update a Delete). Nejsem si ted jist jestli
> se treba Delete
> trigger spousti PRED zmazanim nebo PO smazani zaznamu. A v
> tom je ten problem -
> nekdy potrebuju provest nejakou operaci PRED a jinou az PO
> smazani zaznamu.
> Proste implementace triggeru v MS SQL neni IMHO dostatecna.

Proc? Ja teda znam MS SQL pouze zbezne, ale myslim, ze implementace
triggeru je dostatecna. Zkusim se zamyslet nad situacemi, kdy
je nutne rozlisovat before a after:
1) potrebuji znat stara a nova data pri update - z helpu SQL Serveru:
Triggers can also find the difference between the state of a table before
and after a data modification and take action(s) based on that difference.
2) nedovoleni akce - to by melo jit rollbackem
3) udrzovani ref. integrity - napr. kaskadovy delete: nechce se mi to
hledat,
ale pochybuji, ze by to neslo. A vubec - myslim, ze trigger AFTER DELETE
nema zadny vyznam - je potreba pouze BEFORE DELETE.

nic vic me nenapada.
Mas priklad akce, kde potrebujes AFTER DELETE?
myslim, ze AFTER a BEFORE ma vyznam pouze pro UPDATE.

> Mac
>

Jiri Polak
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

elementarny problem s C/S

[*] Jaro <jaro(zv)sinea(tec)cz> - 10.3.1999 09:15:23

Ano souhlasim s Martinem.
Na tomhle prikladu je pekne videt, ze potreba zamku mnohdy vznika z
nedostatecne analyzy problemu. Vezmeme ten priklad lekarske zpravy.
Lekarskou zpravu ma pravo menit jen ten, kdo ji vytvoril (vysetrujici
lekar). On je pod ni take podepsan a za jeji spravnost ruci pred zakonem.
Nikdo jiny mu tam nemuze vpisovat. Pominu, ze jeden pacient muze byt
soucasne vysetrovan jen na jednom oddeleni (pokud nema dvojnika). Ostatni
oddeleni k te zprave pripojuji sva vysetreni, laboratore atd. Vysetrujii
lekar zpravidla zpravu nakonec komletuje. Ostatni strediska tedy budou
zapisovat do svych zaznamu nebo budou vytvaret zaznamy nove, kde bude zase
jejich identifikace. Za laboratorni vysetreni neruci vysetrujici lekar, ale
nejaky pracovnik laborky. Stejne tak rentgen, hematologie a pod. Resim-li
situaci tak, aby nedochazelo k praktickym konfliktum, pak mi zpravidla
odpadnou i databazove konflikty. Proto vzdy tvrdim, ze lepsi struktura
databaze a dobry system pristupovych prav je lepsim resenim nez zamykani
zaznamu.
Vtip je v tom, ze podobnou uvahu o rozpadu relacnich tabulek lze dobre
uplatnit i jinde. Zacatecnikum v C/S doporucuji k pozornosti nekolik
poslednich cisel casopisu CHIP, kde vychazi pekny serial o projektovani
databazi. Na prikladech Snehurky, trpasliku a pod. je to tam nazorne
vysvetlovano.
Jaro

----------
>Mirun wrote:
>
>> Prihodim dalsi: mam programek pro evidenci pacientu, ve kterem
>> se
>> >pisi k jednotlivym diagnozam textove zpravy, ktere se ukladaji do
databaze.
>> >Takova zprava se pise cca pul hodiny az hodinu a proste neni mozne, aby
ji
>> >najednou psalo vice lidi. Tzn. potrebuju zaznam zamknout (POZOR nejedna
se
>> o
>> >zaznam na databazi, ale v podstate o nejaky flag!).
>>
>> Jelikoz neznam pozadi teto aplikace, vezmu to tak, jak je to napsano.
>> Je nepravdepodobne, ze na stejnem oddeleni bude psat k danemu pacientovi
a
>
>Kde si vzal ta oddeleni? Ty tam nejsou. Ale pro nazornost budiz :-)
>
>> dane diagnoze zpravu vice jak 1 clovek. Pokud je 10 oddeleni, a kazde z
nich
>> je nuceno se k diagnoze vyjadrit, bylo by dle me lepsi udelat dalsi
tabulku,
>> kde ma kazde oddeleni svuj zaznam. Konecna zprava tak jak si ji uvedl Ty,
>> bude nejspis vypadat takto (vsechno v jednom memu)
>>
>> 5.5.1999
>> Chirurgie
>> bla bla, bla
>>
>> 5.5.1999
>> Nosni
>> bla bla bla
>>
>> Kdyz to udelas tak jak jsem se zminil (tabulkou) bude vypadat takto
>> Datum Text Memo
>> 5.5.1999 Chirurgie blablabla
>> 5.5.1999 Nosni blablabla
>>
>> Odpadne tim nutnost zaznam zamykat (pouzil bych zpusob uvedeny v prvnim
>> odstavci), navic je pak pro uzivatele jednosussi si nechat zjistit pouze
>> udaje z chirurgie, aniz by musel hledat v textu, kde co kdo napsal, a
lecos
>> prehlednout.
>
>Ta zprava spise vypada takto:
>
>5.5.1999
>Pedagog - blablabla
>
>Psycholog - blablabla
>
>Specialni pedagog - blablabla
>
>Kazdy pripise sve stanovisko, pricemz vychazi z textu napsaneho predchozim
>odbornikem (a taky jej obcas treba i meni).Tzn. asi by nebylo zrovna
dvakrat
>idealni vychazet z predchoziho textu a po dopsani zjistit, ze ten puvodni
text
>je najednou jiny ne? Me toto pripada v tomto pripade vhodnejsi.
>
>> >Dalsi jednoduchy priklad: zakaznik si preje, aby jeden zaznam mohl v
jednom
>> >okamziku editovat pouze jeden clovek.
>>
>> Tady nechapu proc , zakaznik je nejspis silny egoista :-)))
>
>Dejme tomu proto, ze to vyzaduji vnitrni potreby (smernice) firmy. Ja
netvrdim,
>ze je to vselek, pouze ze nekdy je to vyhodnejsi, nez umoznit upravovat
jeden
>zaznam nekolika uzivatelum najednou. Taky dost zalezi na poctu uzivatelu
atd.
>
>> Zaverem chci upozornit, ze se nad danym problemem pouze zamyslim, protoze
me
>> zajima, v praxi programuji pouze 1 uzivatelske aplikace. Takze je mozne
ze
>> nektere moje nazory budou mozna hodne vzdalene realnemu zivotu. Proto je
>> berte s rezervou.
>
>Ja myslim, ze od toho je diskuse. Kdyz si na vsechno budeme souhlasne
pokyvovat,
>tak se daleko nedostaneme :-)
>
>Mac
>--
>==============================================================
>= Ing. Martin Kubecka - Amenit s.r.o. =
>= Na Valech - budova Dytron, 741 01 Novy Jicin =
>= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
>= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
>= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
>==============================================================
>

elementarny problem s C/S

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 10.3.1999 09:16:44

Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:

> Ta zprava spise vypada takto:
>
> 5.5.1999
> Pedagog - blablabla
>
> Psycholog - blablabla
>
> Specialni pedagog - blablabla

Pokud je tohle v jednom jedinem memo poli, tak je to ale
podle me spatne navrzena databaze.

> Kazdy pripise sve stanovisko, pricemz vychazi z textu napsaneho predchozim
> odbornikem (a taky jej obcas treba i meni).Tzn. asi by nebylo zrovna

Chces rici, ze psycholog neco napise a pedagog mu to suse
zmeni? A co ten na to rika?

> dvakrat idealni vychazet z predchoziho textu a po dopsani zjistit, ze ten
> puvodni text je najednou jiny ne? Me toto pripada v tomto pripade
> vhodnejsi.

Ale tomu stejne nezabranis v pripade, ze prvni si to zmeni
az pote, co tam druhy neco dopsal. Navic pri tomto reseni
muze psat tento text jen jeden clovek v jednom case, zatimco
v navrhovanem reseni jich muze psat 5 najednou.


S pozdravem
Petr Zahradnik, pocitacovy expert

Autorizovany dealer TurboPower Software... knihovny pro Delphi
==============================================================
=== Petr Zahradnik - Computer Laboratory ===
=== Obvodova 740/14, PO BOX 15, 400 07 Usti nad Labem 7 ===
=== telefon: 047-5500610, telefon/fax: 047-5501627 ===
=== mobilni telefon GSM (hotline): 0602-409601 ===
=== http://www.clexpert(tec)cz/ clexpert(zv)clexpert(tec)cz ===
==============================================================
ICQ: 21215917, PGP vitano


elementarny problem s C/S

[*] Jaro <jaro(zv)sinea(tec)cz> - 10.3.1999 09:28:33

Jeden hacek byl v tom, ze to bezi na MS SQL, tedy zadne
BeforeXxx neexistuje.
------------
MS SQL nema triggery? Jak je zajistena integrita?
Jaro


elementarny problem s C/S

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 10.3.1999 09:35:26

Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:

> Hozna Sebelik psal o serveru jako o samostatne aplikaci. Jasne, souhlasim.
> Je fajn pouzivat triggery a bussinnes rules na strane serveru. Samozrejme
> budu oponovat (ale jen trosku). Tento pristup je nesikovny v pripade, ze
> databazovy server je 'za hory, za lesy' a neni k nemu elektronicke cesty.

Ale tak je to temer vzdy, ne? Co je tam za problem? Zmeny si napises
do skriptu a ten jednoduse spustis, on udela zmeny a je vyrizeno.
Ale nepochopil jsem - jak jinak udelas zmenu v te databazi, byt to
mas jen jako skladiste dat? Prece take takto, ne? Vzdyt neni rozdil,
jestli v tom skriptu posles jen zmenu tabulky a nebo i trigger
ci vlozenou proceduru...

> V tom pripade je nutne kazdou upravu delat rucne na serveru (resp. napsat
> nejaky script na upravu databaze). Pokud pouzivam server pouze jako
> 'neinteligenti skladiste dat', ktere mi zarucuje pouze integritu a
> bezpecnost dat (relativni), tak muze byt nekdy vyhodnejsi implementovat
> logiku do klienta (snazsi udrzba - mozna na ukor rychlosti).

Ale pak jsou to vyhozene penize, protoze vlastne pouzivas pouze
10% toho, co sis zaplatil. Je to velika skoda vlastne delat
vsechno na klientovi, protoze ten server umi vsechno zajistit
dokonale. Navic si myslim, ze nikdy nemuzes zajistit maximalni
integritu dat na strane klienta. Vzdy to bude lepsi na serveru.


S pozdravem
Petr Zahradnik, pocitacovy expert

Autorizovany dealer TurboPower Software... knihovny pro Delphi
==============================================================
=== Petr Zahradnik - Computer Laboratory ===
=== Obvodova 740/14, PO BOX 15, 400 07 Usti nad Labem 7 ===
=== telefon: 047-5500610, telefon/fax: 047-5501627 ===
=== mobilni telefon GSM (hotline): 0602-409601 ===
=== http://www.clexpert(tec)cz/ clexpert(zv)clexpert(tec)cz ===
==============================================================
ICQ: 21215917, PGP vitano


Chyba pri zavreni Find dialogu...

[*] Ing. Jaroslav K�e�ek - 10.3.1999 09:59:05

Zalezi na tom, co se deje po stisknuti tlacitek.

Zrejme mate nadeklarovanou nejakou rutinu a prilepenou na event OnClose. A
ta asi saha nekam do pameti, kam nema, uvolnuje jiz uvolnenou pamet nebo cte
z uvolnene pameti nebo neco jineho.

Je potreba dodat trochu vic informaci o problemu.

Jaroslav Krecek

-----P�vodn� zpr�va-----
Od: Fryz, Zdenek <fryz(zv)dcb(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 8:27
P�edm�t: Chyba pri zavreni Find dialogu...>ahoj
>
>mam nasledujici problem:
>
>ve sve aplikaci pouzivam TFindDialog - pri zavreni tohoto dialogu at uz
>tlacitkem 'Storno', nebo 'Close' v titulku okna
>se objevi hlaska 'Access violation at address 0042E389 in module ...' .
>Pouzivam D3.
>
>umi nekdo poradit ?
>
>diky
>
>Zdenek Fryz
>

Chyba pri zavreni Find dialogu...

[*] Marek Soukup <marek(zv)comberg(tec)com> - 10.3.1999 10:20:24

Ahoj,
je pot�eba toho v�d�t v�c, ale vypad� to, �e ten finddialog zav�e� a pak si
z n�j �te� hodnoty.

Marek

"Fryz, Zdenek" wrote:

> ahoj
>
> mam nasledujici problem:
>
> ve sve aplikaci pouzivam TFindDialog - pri zavreni tohoto dialogu at uz
> tlacitkem 'Storno', nebo 'Close' v titulku okna
> se objevi hlaska 'Access violation at address 0042E389 in module ...' .
> Pouzivam D3.
>
> umi nekdo poradit ?
>
> diky
>
> Zdenek Fryz


Trideni DataSetu

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 10.3.1999 10:32:33


Vite nekdo neco o trideni datasetu?
Nemyslim ORDER BY v SELECTU, chtel bych
umoznit uzivateli, aby mohl podle ruznych sloupcu
tridit jiz nactena data. Existuje free potomek TQuery,
ktery by to umel?

Diky

Jiri Polak
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

adresar moji aplikace

[*] Richard Valny <richard.valny(zv)oku-st(tec)cz> - 10.3.1999 10:36:40

Ahojky pratele a pratelky,
Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena moje aplikace?

P.S. Vim, ze to zde bylo nedavno, ale nejak se nemohu dostat na www.delphi(tec)cz s archivem a muj archiv mi vcelku nedavno spadl :-((

===========mozno pouzit PGP==============
Richard Valny richard.valny(zv)oku-st(tec)cz
Okresni urad Strakonice tel. 0342-441 l. 216
Smetanova 533 fax. 0342-21208
386 22 STRAKONICE FiDoNet 2:423/35
===========mozno pouzit PGP==============

... Windows nemohou byti virem, nebot virus je napsan inteligentne a neco dela


Inno Setup

[*] Jaroslav Sikora <sikora(zv)kam(tec)czu(tec)cz> - 10.3.1999 09:42:20 met

Podivej se do registru na
HKEY_LOCAL_MACHINE\Software\Borland

Musis zapsat vetve
HKEY_LOCAL_MACHINE\Software\Borland\BLW32
HKEY_LOCAL_MACHINE\Software\Borland\Database
Engine\Settings\DRIVERS - zde si vyberes, ktere potrebujes
Ja jeste zapisuju vetve REPOSITORIES a SYSTEM, ale nevim
jestli jsou nutne.

Jarda
sikora(zv)kam(tec)czu(tec)cz

> Dobry den,
>
> potrebuji pomoci, zde jiz zminovaneho, Inno Setupu vytvorit instalaci
> BDE verze 5, ale nikde jsem nenasel, ktere soubory jsou nezbytne nutne
> distribuovat ( treba jen pro paradox ) a co vsechno zapsat do registru.
> Poradte, prosim.
>
> S pozdravem
>
> Petr Riedel

Popis jazyka SQL

[*] Kriz David <david.kriz(zv)ccv(tec)cz> - 10.3.1999 10:44:09

V soucasne dobe se mi jedna o Oracle, ale rad budu mit k dispozici i ty
dalsi. :-)

> -----P�vodn� zpr�va-----
> Od: Vodnansky David [SMTP:Vodnansky(zv)allianz(tec)cz]
> Odesl�no: �ter� 9. b�ezna 1999 16:53
> Komu: 'delphi-l(zv)fwd(tec)cz'
> P�edm�t: RE: Popis jazyka SQL
>
> Pro nejakou konkretni databazi nebo uplne obecne (a tedy IMHO k
> nicemu:-) ?
> Muzu dodat popis SQL pro Oracle,Interbase. Obecne neco vyslo na Zive
> (zive.cpress(tec)cz) a treba v Chipu.
>
> > -----P�vodn� zpr�va-----
> > Od: David Kriz [mailto:david.kriz(zv)ccv(tec)cz]
> > Odesl�no: 9. b�ezna 1999 16:21
> > Komu: Diskuse o Delphi
> > P�edm�t: Popis jazyka SQL
> >
> >
> > Nevite nekdo o nejakem popisu jazyka SQL, ktery je pokud mozno v
> > elektronicke podobe a zadarmo?
>
~~~ Podpis (ENG:signature, ESP:firma, DEU: Unterschrift) ~~~~~~~~~~~~~~~~
David K�� (David Kriz), CCV s.r.o., Jiraskova 43, 602 00, Brno, Czech
republic
Tel.: 420-5-41215476, 41218050, Fax: 41217757
Internet: http://www.ccv(tec)cz, e-mail: david.kriz(zv)ccv(tec)cz
(mailto:david.kriz(zv)ccv(tec)cz).>

Jak na ODBC ?

[*] halam(zv)post(tec)cz - 10.3.1999 10:56:44

Cht�l bych se nau�il propojov�n� aplikac� Delphi pomoc� ODBC nap�. s Accessem,.... . Sh�n�m jakou-koliv dokumentaci, nebo n�vody jak se prokousat t�mto t�matem.

D�ky moc.

Ovladani CD

[*] H�gr Ond�ej <Hegro(zv)senat(tec)cz> - 10.3.1999 11:28:47

Ahoj Delphisti,

mam dva problemy:

1. pokousel jsem se pres Delphi Super Page stahnout cdevents.zip ale
zaboha se nemuzu dostat na prislusne ftp. Muze mi nekdo tento soubor
poskytnout ?

2. Od znameho jsem si pujcil D4 C/S a zkusil ho nainstalovat na svem PC
(jinak mam D3 professional) abych videl, v cem se ty verze lisi. Bohuzel
jsem videl pouze uvodni obrazovku a pak pocitac totalne zatuhnul. Nevite
nekdo cim to muze byt ? Nepouzil jsem zadny SP, nemam autoexec ani config a
pocitac obsahuje: chipset VX Pro, procesor i133MHz, 64MB RAM, HDD Western
1.2 GB. Vim, ze tenhle dotaz nesouvisi primo s programovanim, ale kazdemu,
kdo se s necim podobnym setkal, nebo vi co s tim budu moc vdecny

Diky

Ondrej Hegr
e-mail: hegro(zv)senat(tec)cz


adresar moji aplikace

[*] Krayzel Libor <Libor.Krayzel(zv)czech-tv(tec)cz> - 10.3.1999 11:29:25

> Ahojky pratele a pratelky,
> Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena
> moje aplikace?
>
ExtractFilePath(paramstr(0))

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 11:32:39

Jaro wrote:

> A co myslis tou deklarativnuu integritou?

Co treba toto?:

create table cfunkce
(
id_cfunkce int identity,
cfu_popis varchar(30) not null,
cfu_editable bit not null
default 1,
constraint PK_CFUNKCE primary key (id_cfunkce)
)
go

create table pracovnici
(
id_pracovnik int identity,
id_cfunkce int not null,
pr_prijmeni varchar(25) not null,
pr_jmeno varchar(20) not null,
pr_titul varchar(15) null ,
pr_login varchar(20) not null,
pr_heslo varchar(20) not null,
pr_aktivni bit not null
default 1,
constraint PK_PRACOVNICI primary key (id_pracovnik)
)
go

create index FK_cfunkce_pracovnici on pracovnici (id_cfunkce)
go

alter table pracovnici
add constraint FK_PRACOVNI_CFUNKCE_P_CFUNKCE foreign key (id_cfunkce)
references cfunkce (id_cfunkce)
go


> Mas-li na mysli definici primarnich a cizich klicu, tak to je jen prvni
> krok. Ale to samo nestaci. Do konecne integrity to ma jeste hodne daleko.
> Az triggery "vdechnou" databazi "zivot" a umozni, aby se o svou integritu
> starala hlavne sama. Databaze na databazovem stroji neni jen hromada
> volne lozenych dat. Je to "stroj", je to inteligentni system.
> (teda alespon pokud ho vytvori inteligent.)

:-)

> Dam jednoduchy priklad. Musis zajistit, ze nesmazes master,
> pokud k tomuto zaznamu existuji detaily. Jak jinak, nez na triggeru
> BeforeDelete dotazem SELECT Detail Count(*) WHERE IdMaster = idDetail
> Podobne to plati pro ciselniky atd.

A nebo tak jak jsem uvedl nahore ;-) a bez tygru ;-)

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

adresar moji aplikace

[*] Linhart Petr <Petr(zv)manwe.mius(tec)cz> - 10.3.1999 11:40:44

ParamStr(0) vrati plnou cestu i s EXE souborem

Petr Linhart, System developer (mailto://Petr.Linhart(zv)mius(tec)cz)
Mius a.s. (http://www.mius(tec)cz)
Dlouha 2940
415 01 TEPLICE
Czech Republic


> -----P�vodn� zpr�va-----
> Od: Richard Valny [SMTP:richard.valny(zv)oku-st(tec)cz]
> Odesl�no: 10. b�ezna 1999 10:37
> Komu: 'delphi-l(zv)fwd(tec)cz'
> P�edm�t: adresar moji aplikace
>
> Ahojky pratele a pratelky,
> Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena
> moje aplikace?
>
> P.S. Vim, ze to zde bylo nedavno, ale nejak se nemohu dostat na
> www.delphi(tec)cz s archivem a muj archiv mi vcelku nedavno spadl :-((
>
> ===========mozno pouzit PGP==============
> Richard Valny richard.valny(zv)oku-st(tec)cz
> Okresni urad Strakonice tel. 0342-441 l. 216
> Smetanova 533 fax. 0342-21208
> 386 22 STRAKONICE FiDoNet 2:423/35
> ===========mozno pouzit PGP==============
>
> ... Windows nemohou byti virem, nebot virus je napsan inteligentne a neco
> dela


adresar moji aplikace

[*] Martin Lasevic <vyvoj(zv)atlascon(tec)cz> - 10.3.1999 11:43:18

Nebo taky Application.ExeName.
Martin

-----Puvodni zprava-----
Od: Krayzel Libor [SMTP:Libor.Krayzel(zv)czech-tv(tec)cz]
Odeslano: 10. boezna 1999 11:29
Komu: 'delphi-l(zv)fwd(tec)cz'
Poedmit: RE: adresar moji aplikace

> Ahojky pratele a pratelky,
> Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena
> moje aplikace?
>
ExtractFilePath(paramstr(0))

adresar moji aplikace

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 10.3.1999 11:44:59

> -----Original Message-----
> From: Richard Valny [mailto:richard.valny(zv)oku-st(tec)cz]
> Sent: Wednesday, March 10, 1999 10:37 AM
> To: 'delphi-l(zv)fwd(tec)cz'
> Subject: adresar moji aplikace
>
>
> Ahojky pratele a pratelky,
> Jaka funkce vrati adresar (nebo i kompletni cestu), odkud
> byla spustena moje aplikace?
>

Cela cesta je v ParamStr(0)
a v Application.ExeName

Jiri Polak
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 11:47:44

Polak Jiri wrote:

> > Treba pomoci Constraints (deklarativni integritou). Ja napr.
> > nemam jedinny
> > trigger a integritu neporusi :-).
>
> Pomoci constraints nelze popsat vsechno.

To je pravda.

> > Hozna Sebelik psal o serveru jako o samostatne aplikaci.
> > Jasne, souhlasim. Je
> > fajn pouzivat triggery a bussinnes rules na strane serveru.
>
> V tom pripade to neni Client Server aplikace

??? No nevim, mozna existuje nejaky 'kodex' C/S aplikaci (nejsem a ani se
nepovazuju za nejakeho C/S guru ;), ale ja si predstavuju pod timto pojmem to,
ze databazove operace se provadi na serveru (resp. veskere casove narocne
operace). Proste klient jen posle dotazy a zobrazuje vysledky. Takze kdyz
nemam triggery, tak to neni C/S? Tak ja si nejaky vymyslim ;-).

> > nutne kazdou upravu delat rucne na serveru (resp. napsat
> > nejaky script na upravu
> > databaze). Pokud pouzivam server pouze jako 'neinteligenti
> > skladiste dat', ktere
> > mi zarucuje pouze integritu a bezpecnost dat (relativni), tak
> > muze byt nekdy
> > vyhodnejsi implementovat logiku do klienta (snazsi udrzba -
> > mozna na ukor
> > rychlosti).
>
> Neni zadny klient. Je to samostatny program na porizovani dat.

No tak tady uz ti nerozumim temer vubec ;-)

> nic vic me nenapada.
> Mas priklad akce, kde potrebujes AFTER DELETE?
> myslim, ze AFTER a BEFORE ma vyznam pouze pro UPDATE.

Ten DELETE jsem vzal jako priklad, muzes si jej nahradit za UPDATE pokud
chces. ;-)

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Hynek svatos <svatos(zv)af(tec)czu(tec)cz> - 10.3.1999 10:48:23 met

> Jeden hacek byl v tom, ze to bezi na MS SQL, tedy zadne
> BeforeXxx neexistuje.
Pokud vim, tak v MS SQL existuji sice jen AftedDelete trigery, ale v
techto trigerech se objevi virtualni tabulka Deleted, ktera obsahuje
vety, ktere byly smazany. Muzes proto v klidu provadet akce
spojene s mazanim.
U trigeru na Insert a Update existuji analogicky tabulky Inserted
(ano, i pro Update se jmenuje Inserted).
> MS SQL nema triggery?
To je prece blbost - bez toho by to nemohly vubec prodavat, cely
databazovy svet by se jim vysmal.

Hynek Svatos
svatos(zv)af(tec)czu(tec)cz

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 11:59:02

Petr Zahradnik wrote:

> Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:
>
> > Ta zprava spise vypada takto:
> >
> > 5.5.1999
> > Pedagog - blablabla
> >
> > Psycholog - blablabla
> >
> > Specialni pedagog - blablabla
>
> Pokud je tohle v jednom jedinem memo poli, tak je to ale
> podle me spatne navrzena databaze.

Vidis to a podle me ne ;-). Ona to totiz muze byt taky zprava typu:

5.5.99 -

blablabla Pepa

Proste v realu je to jeden papir, ktery si lidi predavaji mezi sebou a dopisuji
tam sve zavery. Jiste, muzu to rozdelit do dalsi tabulky zprav 1:N, ale PROC
bych to delal? Maximalne, abych cely proces uzivatelum zneprehlednil.

> > Kazdy pripise sve stanovisko, pricemz vychazi z textu napsaneho predchozim
> > odbornikem (a taky jej obcas treba i meni).Tzn. asi by nebylo zrovna
>
> Chces rici, ze psycholog neco napise a pedagog mu to suse
> zmeni? A co ten na to rika?

Co by rikal, nedozvi se to ;-). Ne, vazne, muze udelat nejake stylisticke upravy
apod. - je to spolecne dilo nekolika osob - neni to typicka lekarska zprava,
pozor na to.

> > dvakrat idealni vychazet z predchoziho textu a po dopsani zjistit, ze ten
> > puvodni text je najednou jiny ne? Me toto pripada v tomto pripade
> > vhodnejsi.
>
> Ale tomu stejne nezabranis v pripade, ze prvni si to zmeni
> az pote, co tam druhy neco dopsal.

Tomu zabranit nechci, naopak, pokud si to prvni bude chtit zmenit, tak mam
jistotu, ze uvidi aktualni udaje a ne nejaka stara data.

> Navic pri tomto reseni
> muze psat tento text jen jeden clovek v jednom case, zatimco
> v navrhovanem reseni jich muze psat 5 najednou.

To je PRESNE to co chci. Tu zpravu nemuze patlat pet lidi najednou (oni musi
vychazet z vysledku ostatnich lidi - tzn. musi je videt pred sebou a to v
aktualni podobe).

Mac

==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

adresar moji aplikace

[*] Tom� R��i�ka - 10.3.1999 12:05:16

Nedavno jsem neco takoveho delal>
Pouzij funkci

DWORD GetModuleFileName(

HMODULE hModule, // handle to module to find filename for
LPTSTR lpFilename, // pointer to buffer for module path
DWORD nSize // size of buffer, in characters
);

hModule nastav na HInstance tve aplikace
a v lpFilename dostanes cestu+filename. Odfiltruj filename a mas adresar,
odkud to bylo spusteno

Zdarec !

Tomas Ruzicka
ruzicka(zv)com-tech(tec)cz

-----P�vodn� zpr�va-----
Od: Richard Valny <richard.valny(zv)oku-st(tec)cz>
Komu: 'delphi-l(zv)fwd(tec)cz' <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 11:39
P�edm�t: adresar moji aplikace


>Ahojky pratele a pratelky,
>Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena
moje aplikace?
>
>P.S. Vim, ze to zde bylo nedavno, ale nejak se nemohu dostat na
www.delphi(tec)cz s archivem a muj archiv mi vcelku nedavno spadl :-((
>
>===========mozno pouzit PGP==============
>Richard Valny richard.valny(zv)oku-st(tec)cz
>Okresni urad Strakonice tel. 0342-441 l. 216
>Smetanova 533 fax. 0342-21208
>386 22 STRAKONICE FiDoNet 2:423/35
>===========mozno pouzit PGP==============
>
>... Windows nemohou byti virem, nebot virus je napsan inteligentne a neco
dela
>
>

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 12:10:21

Petr Zahradnik wrote:

> Ale tak je to temer vzdy, ne? Co je tam za problem? Zmeny si napises
> do skriptu a ten jednoduse spustis, on udela zmeny a je vyrizeno.
> Ale nepochopil jsem - jak jinak udelas zmenu v te databazi, byt to
> mas jen jako skladiste dat? Prece take takto, ne? Vzdyt neni rozdil,
> jestli v tom skriptu posles jen zmenu tabulky a nebo i trigger
> ci vlozenou proceduru...

Jo jo, mas vlaste pravdu...

> > V tom pripade je nutne kazdou upravu delat rucne na serveru (resp. napsat
> > nejaky script na upravu databaze). Pokud pouzivam server pouze jako
> > 'neinteligenti skladiste dat', ktere mi zarucuje pouze integritu a
> > bezpecnost dat (relativni), tak muze byt nekdy vyhodnejsi implementovat
> > logiku do klienta (snazsi udrzba - mozna na ukor rychlosti).
>
> Ale pak jsou to vyhozene penize, protoze vlastne pouzivas pouze
> 10% toho, co sis zaplatil. Je to velika skoda vlastne delat
> vsechno na klientovi, protoze ten server umi vsechno zajistit
> dokonale.

Ne vse server dokaze. Preci jen ma omezene napr. nektere matematicke funkce
apod. To radeji sectu dve cisla na klientovi a poslu je serveru, nez je predavat
parametrama do ulozene procedury (trosku extremni priklad, uznavam ;-).

> Navic si myslim, ze nikdy nemuzes zajistit maximalni
> integritu dat na strane klienta. Vzdy to bude lepsi na serveru.

Proboha! To bych si NIKDY nedovolil. Akorat na to nepotrebuju triggery (na MS
SQL).

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

Ovladani CD

[*] SICHTA Daniel <Sichta(zv)asset.sk> - 10.3.1999 12:14:53

-----Original Message-----
From: H�gr Ond�ej [SMTP:Hegro(zv)senat(tec)cz]
Sent: 10. marec 1999 11:29
To: 'delphi-l(zv)fwd(tec)cz'
Subject: Ovladani CD

Ahoj Delphisti,

mam dva problemy:

1. pokousel jsem se pres Delphi Super Page stahnout
cdevents.zip ale
zaboha se nemuzu dostat na prislusne ftp. Muze mi nekdo tento
soubor
poskytnout ?

Mal by som to niekde mat. Pohladam to a poslem ti na sukromny
mail

2. Od znameho jsem si pujcil D4 C/S a zkusil ho
nainstalovat na svem PC
(jinak mam D3 professional) abych videl, v cem se ty verze lisi.
Bohuzel
jsem videl pouze uvodni obrazovku a pak pocitac totalne
zatuhnul. Nevite
nekdo cim to muze byt ? Nepouzil jsem zadny SP, nemam autoexec
ani config a
pocitac obsahuje: chipset VX Pro, procesor i133MHz, 64MB RAM,
HDD Western
1.2 GB. Vim, ze tenhle dotaz nesouvisi primo s programovanim,
ale kazdemu,
kdo se s necim podobnym setkal, nebo vi co s tim budu moc vdecny

Nemas nahodou graficku kartu S3 ? Ak ano , tak do SYSTEM.INI do sekcie
[DISPLAY] dopis toto
BusThrottle=on

Diky

Ondrej Hegr
e-mail: hegro(zv)senat(tec)cz


Chyba pri zavreni Find dialogu - upresneni

[*] Fryz, Zdenek <fryz(zv)dcb(tec)cz> - 10.3.1999 12:14:36

jedina udalost, ktera je v dialogu obslouzena je OnFind, OnShow a OnClose
obslouzeny nejsou
Vlastnost Options:=[frDown,frHideUpDown]

dialog pouzivam pro hledani ve StringGrid - mrizka obsahuje seznam PSC,
ktery je nacten pri startu aplikace
z textoveho souboru :

assignfile(f,'psc.txt');
reset(f);
while not eof(f) do
begin
readln(f,sRow);
.
.
.
closefile(f);

jestlize pouziji dialog po startu aplikace = po prvnim nacteni souboru,
uvedena chyba se neprojevi,
projevi se az po dalsim nacteni textoveho souboru s PSC.
Pro nacteni souboru pouzivam pokazde stejnou proceduru. Nevidim zadnou
souvislost mezi nactenim souboru a Find dialogem.
Ve sve aplikaci chci mit moznost znovunacteni souboru, nevidim duvod proc by
se mela kvuli problemu s dialogem restartovat -
to bych uzivateli tezko vysvetloval...

> -----P�vodn� zpr�va-----
> Od: Ing. Jaroslav K�e�ek [SMTP:grafex(zv)iol(tec)cz]
> Odesl�no: 10.03.1999 09:59
> Komu: delphi-l(zv)fwd(tec)cz
> P�edm�t: Re: Chyba pri zavreni Find dialogu...
>
> Zalezi na tom, co se deje po stisknuti tlacitek.
>
> Zrejme mate nadeklarovanou nejakou rutinu a prilepenou na event OnClose. A
> ta asi saha nekam do pameti, kam nema, uvolnuje jiz uvolnenou pamet nebo
> cte
> z uvolnene pameti nebo neco jineho.
>
> Je potreba dodat trochu vic informaci o problemu.
>
> Jaroslav Krecek
>
> -----P�vodn� zpr�va-----
> Od: Fryz, Zdenek <fryz(zv)dcb(tec)cz>
> Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
> Datum: 10. b�ezna 1999 8:27
> P�edm�t: Chyba pri zavreni Find dialogu...
>
>
> >ahoj
> >
> >mam nasledujici problem:
> >
> >ve sve aplikaci pouzivam TFindDialog - pri zavreni tohoto dialogu at uz
> >tlacitkem 'Storno', nebo 'Close' v titulku okna
> >se objevi hlaska 'Access violation at address 0042E389 in module ...' .
> >Pouzivam D3.
> >
> >umi nekdo poradit ?
> >
> >diky
> >
> >Zdenek Fryz
> >

adresar moji aplikace

[*] Karel Chmel <kchmel(zv)csob(tec)cz> - 10.3.1999 12:19:17

ParamStr (0)

Karel

----------
> Odes�latel: Richard Valny <richard.valny(zv)oku-st(tec)cz>
> Komu: 'delphi-l(zv)fwd(tec)cz'
> P�edm�t: adresar moji aplikace
> Datum: 10. b�ezna 1999 10:36
>
> Ahojky pratele a pratelky,
> Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena moje aplikace?
>
> P.S. Vim, ze to zde bylo nedavno, ale nejak se nemohu dostat na www.delphi(tec)cz s archivem a muj archiv mi vcelku nedavno spadl :-((
>
> ===========mozno pouzit PGP==============
> Richard Valny richard.valny(zv)oku-st(tec)cz
> Okresni urad Strakonice tel. 0342-441 l. 216
> Smetanova 533 fax. 0342-21208
> 386 22 STRAKONICE FiDoNet 2:423/35
> ===========mozno pouzit PGP==============
>
> ... Windows nemohou byti virem, nebot virus je napsan inteligentne a neco dela


Sekundarni index

[*] Milan Fiedler <milanf(zv)rts(tec)cz> - 10.3.1999 12:22:44

Toto je zpr�va ve form�tu MIME obsahuj�c�n�kolik ��st�.

Zkousel jsem vytvorit sekundarni index DBASE

table1.Exclusive := True;
Table1.Open;
Table1.AddIndex('indBBB', 'BBB', []);
Table1.Close;

funguje bez problemu, ale v paradoxu mi to nejde, co stim jeste udelat, nebo jak to udelat !
Pres SQL se to chova stejne.

Diky

Milan Fiedler


Tvorba napovedy

[*] Zbysek Hlinka <zhlinka(zv)login(tec)cz> - 10.3.1999 12:30:49

Ondrej Krajicek wrote:

> Kdyz jsme tak u toho, jaky je rozdil mezi HCW a HCRTF ?
> ok

To jsem ani nezjistoval. :-)


S pozdravem

Zbysek Hlinka
E-mail: zhlinka(zv)login(tec)cz, localizator(zv)localizator.com
Tel.: 02/795 29 56; GSM: 0603 551 282
Krystofova 1016, 149 00 Praha 4
CZ


adresar moji aplikace

[*] rys(zv)zas-me(tec)cz - 10.3.1999 12:34:36

>Ahojky pratele a pratelky,
>Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena
>moje aplikace?

Nebylo to ParamStr(0)? >
>P.S. Vim, ze to zde bylo nedavno, ale nejak se nemohu dostat na
>www.delphi(tec)cz s archivem a muj archiv mi vcelku nedavno spadl :-((
>
>===========mozno pouzit PGP==============
>Richard Valny richard.valny(zv)oku-st(tec)cz
>Okresni urad Strakonice tel. 0342-441 l. 216
>Smetanova 533 fax. 0342-21208
>386 22 STRAKONICE FiDoNet 2:423/35
>===========mozno pouzit PGP==============
>
>... Windows nemohou byti virem, nebot virus je napsan inteligentne a neco
>dela
>
>

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 12:34:35

Jaro wrote:

> Ano souhlasim s Martinem.
> Na tomhle prikladu je pekne videt, ze potreba zamku mnohdy vznika z
> nedostatecne analyzy problemu. Vezmeme ten priklad lekarske zpravy.
> Lekarskou zpravu ma pravo menit jen ten, kdo ji vytvoril (vysetrujici
> lekar). On je pod ni take podepsan a za jeji spravnost ruci pred zakonem.

NE v tomto pripade. Neni to typicka lekarska zprava.

> Nikdo jiny mu tam nemuze vpisovat.

Muze :-) ba musi.

> Pominu, ze jeden pacient muze byt
> soucasne vysetrovan jen na jednom oddeleni (pokud nema dvojnika). Ostatni
> oddeleni k te zprave pripojuji sva vysetreni, laboratore atd.

Nejsou oddeleni.

> odpadnou i databazove konflikty. Proto vzdy tvrdim, ze lepsi struktura
> databaze a dobry system pristupovych prav je lepsim resenim nez zamykani
> zaznamu.

To jiste je, ale nekdy to proste neni vhodne (prece nebudu pouzivat za kazdou
cenu urcity postup, jen abych si dokazal, ze to jde i takto, kdyz muzu pouzit
jiny, efektivnejsi postup). Znovu zduraznuji slovo NEKDY a v NEKTERYCH
PRIPADECH.

A jeste bych chtel upozornit ze nepouzivam zamky (databazove), ale priznaky (coz
mi prijde nekdy docela vyhodne, ale bohuzel je potreba nejak vyresit problemy:
baba sla na obed a spadnul klient).

Zacinam mit pocit, ze misto abychom spolecne nasli nejake pripadne reseni jak v
nekterych opravnenych pripadech zajistit praci jednoho uzivatele na jednom
zaznamu v jednom casovem okamziku (a takove pripady v praxi existuji), tak se
hledaji alternativy v navrhu databazi apod (tim ji nechci v zadnem pripade
podcenovat). misto treba v nejake nove technologii nebo v nejakem peknem napadu.
Zatim jedinny, kdo byl schopen neco vymyslet byl vetsinou z vas opovrhovany
builder Martin Fronek se sitovym zamkem. V tom bych videl asi nejefektivnejsi
reseni tohoto problemu pokud se to podari implementovat jako soucast aplikacniho
serveru pro vicevrstve aplikace.

Ja mam pocit, ze bud vsichni pouzivate uplne neco jineho nez Delphi a SQL
servery a nebo mate nejakou tajnou fintu o ktere nevim :-)

Jak teda konkretne resite problem, kdyz jeden radek upravuje vice uzivatelu
najednou a pak jej chteji ulozit???? Berme ze uzivatele maji stejna privilegia
(napr. dva ucetni v podniku - jeden meni treba cenu faktury a druhy meni datum
splatnosti). Krome TClientDataSet z MIDASu nevim o zadnem rozumnem reseni primo
v Delphi.

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 10.3.1999 12:37:02

Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:

> > Pokud je tohle v jednom jedinem memo poli, tak je to ale
> > podle me spatne navrzena databaze.
>
> Vidis to a podle me ne ;-). Ona to totiz muze byt taky zprava typu:

:-)

> Proste v realu je to jeden papir, ktery si lidi predavaji mezi sebou a
> dopisuji tam sve zavery. Jiste, muzu to rozdelit do dalsi tabulky zprav
> 1:N, ale PROC bych to delal? Maximalne, abych cely proces uzivatelum
> zneprehlednil.

Protoze nekdo muze (byt omylem) neco vymazat a je tu pruser.

> > Chces rici, ze psycholog neco napise a pedagog mu to suse
> > zmeni? A co ten na to rika?
>
> Co by rikal, nedozvi se to ;-). Ne, vazne, muze udelat nejake stylisticke
> upravy apod. - je to spolecne dilo nekolika osob - neni to typicka
> lekarska zprava, pozor na to.

Ale i tak neni duvod, proc by to mel menit pedagog psychologovi...

> > Ale tomu stejne nezabranis v pripade, ze prvni si to zmeni
> > az pote, co tam druhy neco dopsal.
>
> Tomu zabranit nechci, naopak, pokud si to prvni bude chtit zmenit, tak mam
> jistotu, ze uvidi aktualni udaje a ne nejaka stara data.

Kdepak, ty mas jednu jedinou jistotu - ze kdyz pedagog zacne psat
zpravu, zaznam bude locknuty a nikdo se na nej nedostane. Takze
kdyz prijde za pedagogem nejaka slecinka, po celou dobu erotickych
hratek bude zaznam nedostupny, mozna se to zvrhne a bude nedostupny
nekolik dni... V podstate nic jineho to neresi.

> > Navic pri tomto reseni
> > muze psat tento text jen jeden clovek v jednom case, zatimco
> > v navrhovanem reseni jich muze psat 5 najednou.
>
> To je PRESNE to co chci. Tu zpravu nemuze patlat pet lidi najednou (oni
> musi vychazet z vysledku ostatnich lidi - tzn. musi je videt pred sebou a
> to v aktualni podobe).

Ale to lze zajistit daleko jednoduseji a elegantneji. Mimochodem,
pokud pedagog neco napise, psycholog dopise a pedagog zase zmeni,
tak nic nepoznas... Ale nez pedagog neco napise, psycholog to jeste
neuvidi, takze ja nevidim, kde by byl problem...
S pozdravem
Petr Zahradnik, pocitacovy expert

==============================================================
=== Petr Zahradnik - Computer Laboratory ===
=== Obvodova 740/14, PO BOX 15, 400 07 Usti nad Labem 7 ===
=== telefon: 047-5500610, telefon/fax: 047-5501627 ===
=== mobilni telefon GSM (hotline): 0602-409601 ===
=== http://www.clexpert(tec)cz/ clexpert(zv)clexpert(tec)cz ===
==============================================================
ICQ: 21215917, PGP vitano


elementarny problem s C/S

[*] Mirun <forcom(zv)telecom(tec)cz> - 10.3.1999 12:43:51


-----P�vodn� zpr�va-----
Od: Jaro <jaro(zv)sinea(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 9:56
P�edm�t: Re: elementarny problem s C/S


>Ano souhlasim s Martinem.
Ted nevim, s cim souhlasis, protoze to co pises dale naprosto protireci
tomu, co Martin napsal ?
Mirun

>Na tomhle prikladu je pekne videt, ze potreba zamku mnohdy vznika z
>nedostatecne analyzy problemu. Vezmeme ten priklad lekarske zpravy.
>Lekarskou zpravu ma pravo menit jen ten, kdo ji vytvoril (vysetrujici
>lekar). On je pod ni take podepsan a za jeji spravnost ruci pred zakonem.
>Nikdo jiny mu tam nemuze vpisovat. Pominu, ze jeden pacient muze byt
>soucasne vysetrovan jen na jednom oddeleni (pokud nema dvojnika). Ostatni
>oddeleni k te zprave pripojuji sva vysetreni, laboratore atd. Vysetrujii
>lekar zpravidla zpravu nakonec komletuje. Ostatni strediska tedy budou
>zapisovat do svych zaznamu nebo budou vytvaret zaznamy nove, kde bude zase
>jejich identifikace. Za laboratorni vysetreni neruci vysetrujici lekar, ale
>nejaky pracovnik laborky. Stejne tak rentgen, hematologie a pod. Resim-li
>situaci tak, aby nedochazelo k praktickym konfliktum, pak mi zpravidla
>odpadnou i databazove konflikty. Proto vzdy tvrdim, ze lepsi struktura
>databaze a dobry system pristupovych prav je lepsim resenim nez zamykani
>zaznamu.
>Vtip je v tom, ze podobnou uvahu o rozpadu relacnich tabulek lze dobre
>uplatnit i jinde. Zacatecnikum v C/S doporucuji k pozornosti nekolik
>poslednich cisel casopisu CHIP, kde vychazi pekny serial o projektovani
>databazi. Na prikladech Snehurky, trpasliku a pod. je to tam nazorne
>vysvetlovano.
>Jaro
>
>----------

Ovladani CD

[*] Jan Fiala <fiala(zv)infos(tec)cz> - 10.3.1999 12:45:53

>2. Od znameho jsem si pujcil D4 C/S a zkusil ho nainstalovat na svem PC
>(jinak mam D3 professional) abych videl, v cem se ty verze lisi. Bohuzel
>jsem videl pouze uvodni obrazovku a pak pocitac totalne zatuhnul. Nevite
>nekdo cim to muze byt ? Nepouzil jsem zadny SP, nemam autoexec ani config

Je to videokartou, typnul bych si na S3. V archivu konference jsou na to
odkazy. Me stacilo nastavit maximum barev, dokud jsem si nestahnul
nejnovejsi ovladac. Po nejake dobe jsem kartu stejne vymenil.

-----------------------------------------------------------------
ing. Jan Fiala jan.fiala(zv)iname.com
Prog-Soft s.r.o.
INFOS - informa�n� system pro n�poj��e
-----------------------------------------------------------------


adresar moji aplikace

[*] Jirka Virt <virt(zv)pepa(tec)cz> - 10.3.1999 12:53:58

Ahoj,

cesta := ExtractFilePath(Application.ExeName);


Ahoj

Jirka Virt
email:
virt(zv)pepa(tec)cz

-----P�vodn� zpr�va-----
Od: Richard Valny <richard.valny(zv)oku-st(tec)cz>
Komu: 'delphi-l(zv)fwd(tec)cz' <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 12:21
P�edm�t: adresar moji aplikace


>Ahojky pratele a pratelky,
>Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena
moje aplikace?
>
>P.S. Vim, ze to zde bylo nedavno, ale nejak se nemohu dostat na
www.delphi(tec)cz s archivem a muj archiv mi vcelku nedavno spadl :-((
>
>===========mozno pouzit PGP==============
>Richard Valny richard.valny(zv)oku-st(tec)cz
>Okresni urad Strakonice tel. 0342-441 l. 216
>Smetanova 533 fax. 0342-21208
>386 22 STRAKONICE FiDoNet 2:423/35
>===========mozno pouzit PGP==============
>
>... Windows nemohou byti virem, nebot virus je napsan inteligentne a neco
dela
>

Prace s databazi v siti

[*] Petr Brant <p.brant(zv)samo(tec)cz> - 10.3.1999 12:54:59

Ahoj vsichni,

sotva jsem vyresil


elementarny problem s C/S

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 10.3.1999 12:55:03

> -----Original Message-----
> From: Martin Kubecka [mailto:martin.kubecka(zv)amenit(tec)cz]
> Sent: Wednesday, March 10, 1999 11:48 AM
> To: delphi-l(zv)fwd(tec)cz
> Subject: Re: elementarny problem s C/S
>
>
> Polak Jiri wrote:
>
> > > Treba pomoci Constraints (deklarativni integritou). Ja napr.
> > > nemam jedinny
> > > trigger a integritu neporusi :-).
> >
> > Pomoci constraints nelze popsat vsechno.
>
> To je pravda.
>
> > > Hozna Sebelik psal o serveru jako o samostatne aplikaci.
> > > Jasne, souhlasim. Je
> > > fajn pouzivat triggery a bussinnes rules na strane serveru.
> >

tady bylo odmazano to, na co jsem reagoval. Vracim to sem:

> Samozrejme budu
> oponovat (ale jen trosku). Tento pristup je nesikovny v
> pripade, ze databazovy
> server je 'za hory, za lesy' a neni k nemu elektronicke
> cesty. V tom pripade je

Kdyz neni k databazovemu serveru elektronicke pripojeni,
znamena to, ze mu klient nemuze poslat dotaz. A program,
ktery pracuje bez serveru neni klient.

> > V tom pripade to neni Client Server aplikace
>
> ??? No nevim, mozna existuje nejaky 'kodex' C/S aplikaci
> (nejsem a ani se

> operace). Proste klient jen posle dotazy a zobrazuje
> vysledky. Takze kdyz
> nemam triggery, tak to neni C/S? Tak ja si nejaky vymyslim ;-).

Takze neni elektronicke cesty a klient posila vysledky?
Uz vidim, ze jsem Te nepochopil, myslels asi,
ze neni elektronicke cesty, jak bys mohl manipulovat
s databazi, pritom u zakaznika to funguje jako C/S. Ano?
Potom nechapu, co je na tom nesikovneho? do databaze musis
zavadet jak tabulky, tak triggery. To samozrejme udelas pri jednom,
takze zaroven s constraints zavadis i triggery a veskerou aplikacni
logiku a muzes se zase vratit 'pred hory a pred lesy'.
V cem je sikovnejsi vozit tam klienty?

Naopak, soucasny vyvoj se ubira jinym smerem. Vicevrstve aplikace jsou
tvoreny vrstvami:
- datova
- aplikacni logika
- prezentacni vrstva (tenky klient)
Aplikace C/S jsou deformace trivrstve architektury tak,
ze aplikacni logika je rozdelena - cast do datove a cast do prezentacni.
Ty ji chces nacpat celou do klienta, ja myslim, ze by ji bylo lip na
serveru.
Myslim, ze je vic svazana s daty nez se zobrazovanim.
Predstav si, ze mas hotovou C/S aplikaci v Delphi a zakaznik ji pouziva.
Potom si zakaznik bude prat aby vedle exe mel jeste aplikaci
provozovanou z WWW browseru. Budes psat noveho klienta nad stejnou DB
a budes v nem muset znovu implementovat aplikacni logiku.

> > > vyhodnejsi implementovat logiku do klienta (snazsi udrzba -
> > > mozna na ukor
> > > rychlosti).

Horsi udrzba

> >
> > Neni zadny klient. Je to samostatny program na porizovani dat.
>
> No tak tady uz ti nerozumim temer vubec ;-)

Tohle uz pada, to jsme si nerozumeli.

Skutecne si nemyslim, ze Tve zduvodneni nesikovnosti pouzivani
aplikacni logiky v serveru je rozumne.
Je jednodussi starat se o jeden server nez o N klientu. To zahrnuje
jednak vymenu aplikacni logiky, druhak konfiguraci.
Na serveru muzes pocitat s takovou konfiguraci, jakou naridis.
Kdezto klienti - to je bordel, musis zjistovat narodni nastaveni
atp. a to ti trochu zkomplikuje zivot.

Jura
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

Prace s databazi v siti

[*] Petr Brant <p.brant(zv)samo(tec)cz> - 10.3.1999 13:04:49

Ahoj vsichni,

co se tyce databazi, jsem trapny amater a naivne jsem si myslel, ze
prace s databazi v siti je sranda. Ovsem chyba lavky.

Pouzivam D3 Standard, pracuji s tabulkou DBF (FoxPro 2.5), ktera ma
kolem 600 zaznamu a pouhe dva sloupce. Z databaze se ma predevsim cist,
zapis je vzacny. Tak jsem (podotykam, ze bez jakekoli konfigurace BDE -
nevyznam se v tom) aplikaci spustil na dvou masinach a obe pristupovaly
na server s databazi. Otevreni tabulky probehlo na obou strojich v
poradku, ale tanec zacal, kdyz oba dva stroje zacaly realizovat nejakou
tu query. Stridave se na jednom i na druhem pocitaci objevila hlaska
"Directory is controlled by other .NET file", obcas se objevilo i to, ze
"File not exist" a jmeno souboru r:\projekty\translate\pdoxusr.lck nebo
tak podobne.

Nevite nekdo co s ti, resp. jak nastavit BDE, aby to chodilo sitove?

Diky moc

********************************************************
Petr Brant [p.brant(zv)samo(tec)cz]

programator v MSVC++, obcas Delphi nebo Visual Basic
********************************************************

elementarny problem s C/S

[*] Pavel Cisar <pcisar(zv)aktis(tec)cz> - 10.3.1999 13:11:29

Haj hou!

>Proste v realu je to jeden papir, ktery si lidi predavaji mezi
sebou a dopisuji
>tam sve zavery. Jiste, muzu to rozdelit do dalsi tabulky zprav
1:N, ale PROC
>bych to delal? Maximalne, abych cely proces uzivatelum
zneprehlednil.


To si snad delas srandu, ne ? Je to prece vsechno jenom software,
takze co ti brani aby front-end zobrazoval a fungoval jako ten
"jeden papir" a v databazi to bylo uplne jinak strukturovane.
Tohle je prachsprosta vymluva.

Prace s databazi v siti

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 10.3.1999 13:41:24

Nevim, jak vypada BDE u D3.
V D4 mi pomohlo toto:
Nastavil jsem pro native driver paradoxu NET DIR
do adresare, kde se nebudou uzivatele mlatit.
Nejlepe na lokal, treba C:\.

Dalsi podobny problem je s aktualnim adresarem
aplikace. Uzivatele tam musi mit pravo zapisu, protoze BDE
tam vyrabi nejake docasne soubory :-o

Jura
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!> -----Original Message-----
> From: Petr Brant [mailto:p.brant(zv)samo(tec)cz]
> Sent: Wednesday, March 10, 1999 1:05 PM
> To: Konference Delphi
> Subject: Prace s databazi v siti
>
>
> Ahoj vsichni,
>
> co se tyce databazi, jsem trapny amater a naivne jsem si myslel, ze
> prace s databazi v siti je sranda. Ovsem chyba lavky.
>
> Pouzivam D3 Standard, pracuji s tabulkou DBF (FoxPro 2.5), ktera ma
> kolem 600 zaznamu a pouhe dva sloupce. Z databaze se ma
> predevsim cist,
> zapis je vzacny. Tak jsem (podotykam, ze bez jakekoli
> konfigurace BDE -
> nevyznam se v tom) aplikaci spustil na dvou masinach a obe
> pristupovaly
> na server s databazi. Otevreni tabulky probehlo na obou strojich v
> poradku, ale tanec zacal, kdyz oba dva stroje zacaly
> realizovat nejakou
> tu query. Stridave se na jednom i na druhem pocitaci objevila hlaska
> "Directory is controlled by other .NET file", obcas se
> objevilo i to, ze
> "File not exist" a jmeno souboru
> r:\projekty\translate\pdoxusr.lck nebo
> tak podobne.
>
> Nevite nekdo co s ti, resp. jak nastavit BDE, aby to chodilo sitove?
>
> Diky moc
>
> ********************************************************
> Petr Brant [p.brant(zv)samo(tec)cz]
>
> programator v MSVC++, obcas Delphi nebo Visual Basic
> ********************************************************
>
>

elementarny problem s C/S

[*] Ale� Kle�ka - 10.3.1999 14:06:21

Ahoj,
rozebirate tady problem, ktery je dost slozite resit na obecne rovine.
Pokud bych se mohl vyjadrit k prikladu s 'pacienty', tak si myslim, ze jedna
z moznosti je tato:
V databazi budou ( mimo jine ) i tyto tabulky:
a) tabulka pacientu
b) tabulka lekaru ( oddeleni )
c) tabulka lekarskych zprav

V tom okamziku je vyresen problem konfliktu, protoze pokud lekar zalozi
k pacientovi zaznam o vysetreni ( do tabulky lekarskych zprav ), pak lze
pomerne snadno ) zarucit, aby zaznam mohl editovat pouze ten, kdo jej
zalozil. Timto zpusobem se muze k danemu pacientovi 'vyjadrit' cela
poliklinika a nasledne bude mozne nacist kompletni lekarskou zpravu podle
tridenou podle potreby ( napr. podle lekaru, oddeleni nebo podle casu
vlozeni zaznamu ) a tim padem ji lze 'zobrazit' jako celek a navic je tim
zaruceno, ze si ruzni lekari budou menit zpravy 'pod rukama', nebudou muset
na sebe cekat atd.

S pozdravem

Ales Klecka
{ a.klecka(zv)email(tec)cz }

-----P�vodn� zpr�va-----
Od: Martin Kubecka <martin.kubecka(zv)amenit(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 12:16
P�edm�t: Re: elementarny problem s C/S


>Mirun wrote:
>
>> Prihodim dalsi: mam programek pro evidenci pacientu, ve kterem
>> se
>> >pisi k jednotlivym diagnozam textove zpravy, ktere se ukladaji do
databaze.
>> >Takova zprava se pise cca pul hodiny az hodinu a proste neni mozne, aby
ji
>> >najednou psalo vice lidi. Tzn. potrebuju zaznam zamknout (POZOR nejedna
se
>> o
>> >zaznam na databazi, ale v podstate o nejaky flag!).
>>
>> Jelikoz neznam pozadi teto aplikace, vezmu to tak, jak je to napsano.
>> Je nepravdepodobne, ze na stejnem oddeleni bude psat k danemu pacientovi
a
>
>Kde si vzal ta oddeleni? Ty tam nejsou. Ale pro nazornost budiz :-)
>
>> dane diagnoze zpravu vice jak 1 clovek. Pokud je 10 oddeleni, a kazde z
nich
>> je nuceno se k diagnoze vyjadrit, bylo by dle me lepsi udelat dalsi
tabulku,
>> kde ma kazde oddeleni svuj zaznam. Konecna zprava tak jak si ji uvedl Ty,
>> bude nejspis vypadat takto (vsechno v jednom memu)
>>
>> 5.5.1999
>> Chirurgie
>> bla bla, bla
>>
>> 5.5.1999
>> Nosni
>> bla bla bla
>>
>> Kdyz to udelas tak jak jsem se zminil (tabulkou) bude vypadat takto
>> Datum Text Memo
>> 5.5.1999 Chirurgie blablabla
>> 5.5.1999 Nosni blablabla
>>
>> Odpadne tim nutnost zaznam zamykat (pouzil bych zpusob uvedeny v prvnim
>> odstavci), navic je pak pro uzivatele jednosussi si nechat zjistit pouze
>> udaje z chirurgie, aniz by musel hledat v textu, kde co kdo napsal, a
lecos
>> prehlednout.
>
>Ta zprava spise vypada takto:
>
>5.5.1999
>Pedagog - blablabla
>
>Psycholog - blablabla
>
>Specialni pedagog - blablabla
>
>Kazdy pripise sve stanovisko, pricemz vychazi z textu napsaneho predchozim
>odbornikem (a taky jej obcas treba i meni).Tzn. asi by nebylo zrovna
dvakrat
>idealni vychazet z predchoziho textu a po dopsani zjistit, ze ten puvodni
text
>je najednou jiny ne? Me toto pripada v tomto pripade vhodnejsi.
>
>> >Dalsi jednoduchy priklad: zakaznik si preje, aby jeden zaznam mohl v
jednom
>> >okamziku editovat pouze jeden clovek.
>>
>> Tady nechapu proc , zakaznik je nejspis silny egoista :-)))
>
>Dejme tomu proto, ze to vyzaduji vnitrni potreby (smernice) firmy. Ja
netvrdim,
>ze je to vselek, pouze ze nekdy je to vyhodnejsi, nez umoznit upravovat
jeden
>zaznam nekolika uzivatelum najednou. Taky dost zalezi na poctu uzivatelu
atd.
>
>> Zaverem chci upozornit, ze se nad danym problemem pouze zamyslim, protoze
me
>> zajima, v praxi programuji pouze 1 uzivatelske aplikace. Takze je mozne
ze
>> nektere moje nazory budou mozna hodne vzdalene realnemu zivotu. Proto je
>> berte s rezervou.
>
>Ja myslim, ze od toho je diskuse. Kdyz si na vsechno budeme souhlasne
pokyvovat,
>tak se daleko nedostaneme :-)
>
>Mac
>--
>==============================================================
>= Ing. Martin Kubecka - Amenit s.r.o. =
>= Na Valech - budova Dytron, 741 01 Novy Jicin =
>= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
>= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
>= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
>==============================================================
>

Prace s databazi v siti

[*] Tomas Balusek <tpplus(zv)zasova(tec)cz> - 10.3.1999 14:37:26


>Nevim, jak vypada BDE u D3.
>V D4 mi pomohlo toto:
>Nastavil jsem pro native driver paradoxu NET DIR
>do adresare, kde se nebudou uzivatele mlatit.
>Nejlepe na lokal, treba C:\.

!!!
Aby aplikace fungovala sitovje, prave tenhle adresar _musi_ byt vsude stejny
(fyzicky)!!! Absolutne stejna cesta na vsech pocitacich.
Pr.: NETDIR = \\server\c\data\ a to same na vsech strojich.

Ohledne nastaveni BDE doporucuju archiv konference, docela huste se
probirala ruzna nastaveni (hledej "netdir" nebo "Paradox a sit")
Bye
T.B.

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 14:39:57

Polak Jiri wrote:

> tady bylo odmazano to, na co jsem reagoval. Vracim to sem:

klidne :-)

> Takze neni elektronicke cesty a klient posila vysledky?
> Uz vidim, ze jsem Te nepochopil, myslels asi,
> ze neni elektronicke cesty, jak bys mohl manipulovat
> s databazi, pritom u zakaznika to funguje jako C/S. Ano?

Jojo, nerozumeli jsme si ;-)

> Potom nechapu, co je na tom nesikovneho? do databaze musis
> zavadet jak tabulky, tak triggery. To samozrejme udelas pri jednom,
> takze zaroven s constraints zavadis i triggery a veskerou aplikacni
> logiku a muzes se zase vratit 'pred hory a pred lesy'.
> V cem je sikovnejsi vozit tam klienty?

Jen jsem chtel poznamenat, ze se hure provadeji aktualizace (protoze musis
upravovat jak klienta tak server), ale jak nad tim tak uvazuju, tak to zas
takova hruza taky nei ;-)

> Naopak, soucasny vyvoj se ubira jinym smerem. Vicevrstve aplikace jsou
> tvoreny vrstvami:
> - datova
> - aplikacni logika
> - prezentacni vrstva (tenky klient)
> Aplikace C/S jsou deformace trivrstve architektury tak,
> ze aplikacni logika je rozdelena - cast do datove a cast do prezentacni.
> Ty ji chces nacpat celou do klienta, ja myslim, ze by ji bylo lip na
> serveru.

Nene, ja ji tam cpat nechci (rozhodne ne celou). Tady mas pravdu, ze idealni
by byl ten 'mezikus' v ramci aplikacniho serveru. Otazka je, jak to bude
vypadat v praxi (dema vypadaji vzdycky moc pekne ;).

> Myslim, ze je vic svazana s daty nez se zobrazovanim.
> Predstav si, ze mas hotovou C/S aplikaci v Delphi a zakaznik ji pouziva.
> Potom si zakaznik bude prat aby vedle exe mel jeste aplikaci
> provozovanou z WWW browseru. Budes psat noveho klienta nad stejnou DB
> a budes v nem muset znovu implementovat aplikacni logiku.

Jo to je pravda.

> > > > vyhodnejsi implementovat logiku do klienta (snazsi udrzba -
> > > > mozna na ukor
> > > > rychlosti).
>
> Horsi udrzba

Podle me je to dost individualni (nekdy jo, nekdy ne).

> > > Neni zadny klient. Je to samostatny program na porizovani dat.
> >
> > No tak tady uz ti nerozumim temer vubec ;-)
>
> Tohle uz pada, to jsme si nerozumeli.

Jasne...

> Skutecne si nemyslim, ze Tve zduvodneni nesikovnosti pouzivani
> aplikacni logiky v serveru je rozumne.

OK, uznavam.

> Je jednodussi starat se o jeden server nez o N klientu. To zahrnuje
> jednak vymenu aplikacni logiky, druhak konfiguraci.
> Na serveru muzes pocitat s takovou konfiguraci, jakou naridis.
> Kdezto klienti - to je bordel, musis zjistovat narodni nastaveni
> atp. a to ti trochu zkomplikuje zivot.

Mam pocit, ze zivot nam zkomplikuje vsechno :-)))

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

Restartovat v rezimu MSDOS

[*] Daniel Jirasek <daniel_jirasek(zv)conel(tec)cz> - 10.3.1999 14:45:27

To asi neni presne to co jsem potreboval. Ja potrebuji zavolat takovou funkci, ktera provede
presne to co delaji Windows pri vyberu polozky "Vypnout - Restartovat v rezimu MSDOS" z
menu "START". U API fce ExitWindowsEx nic takoveho neni a ja to nutne potrebuji.

>Nevite nekdo, jak provede prikaz "Restartovat v rezimu MSDOS". Prohledal
jsem cele API, ale
>nemuzu nic najit.
>


Zkus si udelat nejakeho zastupce, nastav mu, ze musi pracovat v rezimu
MS_Dos a podivej se na prvni radek CONFIG.SYS. Aspon tak to delaji Windows.
Po navratu z programu ten radek zase zrusi a restartuji


-----------------------------------------------------------------
ing. Jan Fiala jan.fiala(zv)iname.com
Prog-Soft s.r.o.
INFOS - informaeni system pro napojaoe
-----------------------------------------------------------------

Databaze ...

[*] Pavel Skalick� <P.Skalicky(zv)sh.cvut(tec)cz> - 10.3.1999 14:54:18

Vsem preji prijemny den.
Pokud nekdo z Vas delal s databazemi, pomozte mi prosim vyresit tento
problem:

mam DBEdit(ktery neni videt), do ktereho ukladam hodnoty stylem
DBEdit1.Text := ...
potrebuji, aby se mi zmena promitla do DBNavigatoru, aby se povolilo
tlacitko Post a ja mohl zmenu ulozit. Nevite nekdo jak ?
Dekuji vsem za odpovedi
Pavel Skalicky (P.Skalicky(zv)sh.cvut(tec)cz)

Tlacitko Co to je?

[*] SPELZA s.r.o. <spelzasro(zv)brno(tec)comp(tec)cz> - 10.3.1999 14:55:03

Pro aplikaci v D4 p�u help ale nejsem schopen doc�lit toho
aby se mi po stisku prav�ho tla��tka my�i nad komponentou
objevilo tla��tko Co to je?. F1 i ikona ? funguje ale to zatracen� tla��tko
ne. Mus�m to n�jak o�et�it s�m anebo to je ji� zabudov�no
ve W95.

D�ky. Jara.

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 14:57:02

Pavel Cisar wrote:

> >Proste v realu je to jeden papir, ktery si lidi predavaji mezi
> sebou a dopisuji
> >tam sve zavery. Jiste, muzu to rozdelit do dalsi tabulky zprav
> 1:N, ale PROC
> >bych to delal? Maximalne, abych cely proces uzivatelum
> zneprehlednil.
>
> To si snad delas srandu, ne ? Je to prece vsechno jenom software,
> takze co ti brani aby front-end zobrazoval a fungoval jako ten
> "jeden papir" a v databazi to bylo uplne jinak strukturovane.
> Tohle je prachsprosta vymluva.

Hehe ty me bavis :-))) Brani mi v tom logicka uvaha, analyza (za kterou
si stojim ;-), nasledna pracnost (michani jednotlivych zprav od
uzivatelu do jedne kvuli tisku, v jakem poradi se po sobe budou
tisknout? apod.) a z toho vyplyvajici vyssi casove naroky - vyssi
naklady - vyssi cena atd.

Kdyby se jednalo o vymluvu (navic prachsprostou) tak bych si asi tezko
hral s principem, jak zajistit, aby mohl zpravu (zaznam) upravovat jeden
uzivatel v jednom okamziku, ktery me stal rozhodne vice casu.

Misto "vymluv" bych uvital alespon jedno rozumne reseni ...

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

DBGrid: Zistenie hodnoty v policku pocas editacie

[*] Branislav Danko <danko(zv)basl.sk> - 10.3.1999 15:00:47

Nazdar,
potreboval by som poradit s tymto problemom: Mam v tabulke 2 policka, ktore su navzajom zavisle prostrednictvom urciteho vzorca, t.j. POLICKO1 = POLICKO2 * KONSTANTA a naopak POLICKO2 = POLICKO1 / KONSTANTA. Je teda mozne zadat niektore z nich a to druhe sa automaticky dopocita (takto to bolo specifikovane). Ak prave editujem POLICKO1, tak do policka POLICKO2 ukladam vypocitanu hodnotu, ak POLICKO2 editujem vypocitavam POLICKO1. Chcel by som, aby sa vypocitavana hodnota zobrazovala v druhom policku priebezne. Avsak hodnota Value sa editovanom policku zaktualizuje az ked preskocim na ine policko, resp. zaznam, teda to druhe policko neviem dovtedy vypocitat. Nevie mi niekto poradit, ako mam z policka precitat prave editovany text.

Vdaka Brano.

elementarny problem s C/S

[*] Vodnansky David <Vodnansky(zv)allianz(tec)cz> - 10.3.1999 15:01:12

> -----P�vodn� zpr�va-----
> Od: Martin Kubecka [mailto:martin.kubecka(zv)amenit(tec)cz]
> Odesl�no: 10. b�ezna 1999 11:33
> Komu: delphi-l(zv)fwd(tec)cz
> P�edm�t: Re: elementarny problem s C/S
>
>
> Jaro wrote:
>
> > A co myslis tou deklarativnuu integritou?
>
> Co treba toto?:
>
> create table cfunkce
> (
> id_cfunkce int identity,
> cfu_popis varchar(30) not null,
> cfu_editable bit not null
> default 1,
> constraint PK_CFUNKCE primary key (id_cfunkce)
> )
> go
>
> create table pracovnici
> (
> id_pracovnik int identity,
> id_cfunkce int not null,
> pr_prijmeni varchar(25) not null,
> pr_jmeno varchar(20) not null,
> pr_titul varchar(15) null ,
> pr_login varchar(20) not null,
> pr_heslo varchar(20) not null,
> pr_aktivni bit not null
> default 1,
> constraint PK_PRACOVNICI primary key (id_pracovnik)
> )
> go
>
> create index FK_cfunkce_pracovnici on pracovnici (id_cfunkce)
> go
>
> alter table pracovnici
> add constraint FK_PRACOVNI_CFUNKCE_P_CFUNKCE foreign key
> (id_cfunkce)
> references cfunkce (id_cfunkce)
> go
>
> > Dam jednoduchy priklad. Musis zajistit, ze nesmazes master,
> > pokud k tomuto zaznamu existuji detaily. Jak jinak, nez na triggeru
> > BeforeDelete dotazem SELECT Detail Count(*) WHERE IdMaster
> = idDetail
> > Podobne to plati pro ciselniky atd.
>
> A nebo tak jak jsem uvedl nahore ;-) a bez tygru ;-)
>

Jiste, ale tohle je pouze integrita, kterou ovsem tezko zajistis to, co
trigger vetsinou dela - a to smazani tech podrizenych zaznamu predtim,
nez se smaze master.

Urcite zase nekdo zacne argumentovat, ze v nektere databzi jde i tohle
(on delete cascade) pres constraint, ale neni to obecna vlastnost a
beztriggeru to asi pujde dost tezko.

----------------------------------
David Vodnansky - database analyst
<mailto: vodnansky(zv)allianz(tec)cz>
----------------------------------


adresar moji aplikace

[*] iturcan(zv)gamo.sk - 10.3.1999 15:02:00


>Nedavno jsem neco takoveho delal>
>Pouzij funkci
>
>DWORD GetModuleFileName(
>
> HMODULE hModule, // handle to module to find filename for
> LPTSTR lpFilename, // pointer to buffer for module path
> DWORD nSize // size of buffer, in characters
> );
>
>hModule nastav na HInstance tve aplikace
>a v lpFilename dostanes cestu+filename. Odfiltruj filename a mas adresar,
>odkud to bylo spusteno
>

Hmm,

da sa to aj jednoduksie co tak:

Directory := extractfiledir (application.ExeName)
Ivan Turcan
>-----P�vodn� zpr�va-----
>Od: Richard Valny <richard.valny(zv)oku-st(tec)cz>
>Komu: 'delphi-l(zv)fwd(tec)cz' <delphi-l(zv)fwd(tec)cz>
>Datum: 10. b�ezna 1999 11:39
>P�edm�t: adresar moji aplikace
>
>
>>Ahojky pratele a pratelky,
>>Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena
>>moje aplikace?
>>
>>P.S. Vim, ze to zde bylo nedavno, ale nejak se nemohu dostat na
>www.delphi(tec)cz s archivem a muj archiv mi vcelku nedavno spadl :-((
>>
>>===========mozno pouzit PGP==============
>>Richard Valny richard.valny(zv)oku-st(tec)cz
>>Okresni urad Strakonice tel. 0342-441 l. 216
>>Smetanova 533 fax. 0342-21208
>>386 22 STRAKONICE FiDoNet 2:423/35
>>===========mozno pouzit PGP==============
>>
>>... Windows nemohou byti virem, nebot virus je napsan inteligentne a neco
>>dela
>>
>>

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 15:03:31

Ale� Kle�ka wrote:

> Ahoj,
> rozebirate tady problem, ktery je dost slozite resit na obecne rovine.

Jo a hlavne uplne jiny problem, nez ktery me trapi a to JAK nejlepe zajistit
moznost editace jednoho zaznamu jednim uzivatelem v jednom casovem okamziku. At
uz je to pro pacienty a nebo me o to pozadal Batman a 007. Proste jde o neco
jineho, nez o pacose ;-)

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Pavel Cisar <pcisar(zv)aktis(tec)cz> - 10.3.1999 15:26:31

Haj hou!

From: Martin Kubecka <martin.kubecka(zv)amenit(tec)cz>
>Jo a hlavne uplne jiny problem, nez ktery me trapi a to JAK
nejlepe zajistit
>moznost editace jednoho zaznamu jednim uzivatelem v jednom
casovem okamziku. At
>uz je to pro pacienty a nebo me o to pozadal Batman a 007.
Proste jde o neco
>jineho, nez o pacose ;-)


Mily brachu, v ramci dlouhe diskuse tu padlo mnoho moznych
reseni. Staci si vybrat. Pokud pouzivas MS SQL Server (mam pocit,
ze jsi neco takoveho naznacoval), pak ti vrele doporucuji zdaleka
se vyhnout metode "zahajit editacni transakci (zmenit priznak
apod.), vesele editovat a potvrdit (za hodinu)". Je to sice
nejjednodussi, zato ale nejhorsi mozne reseni (plati obecne ve
svete SQL). Jina a mnohem lepsi reseni samozrejme existuji (rada
jich zde zaznela, pripomenu snad jen externi zamykani napr. pres
filesystem, sdilenou DBF tabulku apod), jsou vsak vzdy pracnejsi
nez vyse uvedene (vcetne lepsi formalizace problemu a spravneho
navrhu databaze). Neni tedy nutne narikat nad problemem, ale
staci pouze zalistovat archivem konference neb tva otazka byla
jiz 100x zodpovezena. Pokud se ti odpovedi, kterych se ti
dostalo, nezamlouvaji, je problem patrne nekde jinde.

Mnoho zdaru.

Prace s databazi v siti

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 10.3.1999 15:30:11

> From: Tomas Balusek [mailto:tpplus(zv)zasova(tec)cz]
>
> >Nevim, jak vypada BDE u D3.
> >V D4 mi pomohlo toto:
> >Nastavil jsem pro native driver paradoxu NET DIR
> >do adresare, kde se nebudou uzivatele mlatit.
> >Nejlepe na lokal, treba C:\.
>
> !!!
> Aby aplikace fungovala sitovje, prave tenhle adresar _musi_
> byt vsude stejny
> (fyzicky)!!! Absolutne stejna cesta na vsech pocitacich.
> Pr.: NETDIR = \\server\c\data\ a to same na vsech strojich.

Pravda, neuvedomil jsem si, ze jde o souborovou DB.
O tom nic nevim, ja jsem to nastavoval na aplikaci s MS SQL Serverem,
kde nema nejaky pdoxusr.lck zadny smysl a slo jenom o to, vyhnout se
pokusum zapisovat do read only adresaru.

Jura
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

NT groups

[*] David Hrbac <hrbac.david(zv)usa(tec)net> - 10.3.1999 15:30:09

Jakym zpusobem se da zjistit do ktere skupiny patri uzivatel na ntckach?
Jmeno uzivatele se da zjistit, ale do ktere skupiny patri porad nevim.
Diky
David Hrbac

elementarny problem s C/S

[*] Pavel Cisar <pcisar(zv)aktis(tec)cz> - 10.3.1999 15:32:34

Haj hou!

>> To si snad delas srandu, ne ? Je to prece vsechno jenom
software,
>> takze co ti brani aby front-end zobrazoval a fungoval jako ten
>> "jeden papir" a v databazi to bylo uplne jinak strukturovane.
>> Tohle je prachsprosta vymluva.
>
>Hehe ty me bavis :-))) Brani mi v tom logicka uvaha, analyza (za
kterou
>si stojim ;-), nasledna pracnost (michani jednotlivych zprav od
>uzivatelu do jedne kvuli tisku, v jakem poradi se po sobe budou
>tisknout? apod.) a z toho vyplyvajici vyssi casove naroky -
vyssi
>naklady - vyssi cena atd.


Ano, pro kazdy problem existuje minimalne jedno elegantni, levne
a naprosto spatne reseni.
Je nutne korektne sladit pozadavky uzivatelu s vlastnostmi
pouzitych technologii. Pokud uzivatele nemaji penize na korektni
reseni, pak nemaji penize ani na SQL server. Udelej jim to v
Paradoxu a mas po problemech.

>Kdyby se jednalo o vymluvu (navic prachsprostou) tak bych si asi
tezko
>hral s principem, jak zajistit, aby mohl zpravu (zaznam)
upravovat jeden
>uzivatel v jednom okamziku, ktery me stal rozhodne vice casu.
>
>Misto "vymluv" bych uvital alespon jedno rozumne reseni ...


Zaznelo zde vice nez jedno ROZUMNE reseni. Nemuzu za to, ze se ti
zadne nelibi.

Mnoho zdaru.

Tlacitko Co to je?

[*] Mal� Dobromil <dodo(zv)rak.pr.ds.mfcr(tec)cz> - 10.3.1999 15:36:41

�ek bych, �e to nen� tla��tko, ale PopUp menu...

> ----------
> Od: SPELZA s.r.o.[SMTP:spelzasro(zv)brno.comp(tec)cz]
> Odesl�no: 10. b�ezna 1999 14:55
> Komu: delphi-l(zv)fwd(tec)cz
> P�edm�t: Tlacitko Co to je?
>
> Pro aplikaci v D4 p�u help ale nejsem schopen doc�lit toho
> aby se mi po stisku prav�ho tla��tka my�i nad komponentou
> objevilo tla��tko Co to je?. F1 i ikona ? funguje ale to zatracen�
> tla��tko
> ne. Mus�m to n�jak o�et�it s�m anebo to je ji� zabudov�no
> ve W95.
>
> D�ky. Jara.
>

Databaze ...

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 15:40:34

Coz takhle zadavat primo do TField od TTable nebo TQuery?

(nejprve doubleclick na TTable - pridat pole ktere potrebujes)

Mac

"Pavel Skalick�" wrote:

> Vsem preji prijemny den.
> Pokud nekdo z Vas delal s databazemi, pomozte mi prosim vyresit tento
> problem:
>
> mam DBEdit(ktery neni videt), do ktereho ukladam hodnoty stylem
> DBEdit1.Text := ...
> potrebuji, aby se mi zmena promitla do DBNavigatoru, aby se povolilo
> tlacitko Post a ja mohl zmenu ulozit. Nevite nekdo jak ?
> Dekuji vsem za odpovedi
> Pavel Skalicky (P.Skalicky(zv)sh.cvut(tec)cz)

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

Databaze ...

[*] Tomas Balusek <tpplus(zv)zasova(tec)cz> - 10.3.1999 15:52:10

Neni mi sice uplne jasne proc mas DBEdit ktery neni videt, ale mozna by ses
mel soustredit na property TQuery.RequestLive v pripade TTable me napada
snad jen ReadOnly (jak u TTable tak u TDBEdit). Nicmene kdybys byl presnejsi
dalo by se neco rici s urcitosti.

Bye
T.B.

>mam DBEdit(ktery neni videt), do ktereho ukladam hodnoty stylem
> DBEdit1.Text := ...
>potrebuji, aby se mi zmena promitla do DBNavigatoru, aby se povolilo
>tlacitko Post a ja mohl zmenu ulozit. Nevite nekdo jak ?
>Dekuji vsem za odpovedi
> Pavel Skalicky (P.Skalicky(zv)sh.cvut(tec)cz)
>

elementarny problem s C/S

[*] Jan �ebel�k <honza(zv)haes(tec)cz> - 10.3.1999 16:19:41

> > > > Treba pomoci Constraints (deklarativni integritou). Ja napr.
> > > > nemam jedinny trigger a integritu neporusi :-).
> > >
> > > Pomoci constraints nelze popsat vsechno.
> >
Pomoci constrains nelze popsat vsechno, ale souhlasim s tim, ze trigger pouziji az teprve tehdy, kdyz deklarativni constraints nestaci.

Mimochodem, pro ty, kteri to nevedi:
InterBase 5 rozsirila moznosti deklarativni intergrity ve Foreign Key (restrict/cascade/set null/set default)

Nekdo tu popisoval, jak by se to resilo pres triggery, ale to uz dnes neni potreba.

Ktere databaze to jeste umi?
Pokud vim, tak Oracle podporuje kaskadni delete. A co dal?

> Proc? Ja teda znam MS SQL pouze zbezne, ale myslim, ze implementace
> triggeru je dostatecna. Zkusim se zamyslet nad situacemi, kdy
> je nutne rozlisovat before a after:

[Honza Sebelik]
Ja teda znam MS SQL take pouze velmi zbezne, ale myslim, ze implementace triggeru ma sve problemy.
1.
Slysel jsem, ze tam jsou triggery teprve od nedavna.
2.
Nerozlisuje se BEFORE/AFTER, myslim, ze se to provadi AFTER.
3.
BEFORE/AFTER je dobre rozlisit uz jenom kvuli logice veci:
BEFORE provadim kontroly, dopocitavam polozky, treba i na zaklade hodnot v jinych tabulkach
AFTER delam navazne akce, napriklad hodnotu radku faktury odectu AFTER DELETE z hlavicky faktury.
Nerozlisim-li BEFORE/AFTER, vznika v nekterych pripadech nebezpeci rekurzivniho zacykleni takovych triggeru.
4.
Triggery v MS SQL jsou ohavne na pohled.
Pristup na old hodnoty je pouze pres select z inserted/deleted.
Chci-li zmenit new hodnoty, musim delat znovu
update ttt set xx=yy where...
Tedy vlastne napr. AFTER UPDATE delam dalsi update.
Je mi z toho spatne, kdyz se na to koukam.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes(tec)cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 931
=========================================

Variantni pole

[*] Jiri Vrabec Java -5 rocnok <xvrabe00(zv)kapr.fme.vutbr(tec)cz> - 10.3.1999 16:23:59

Potreboval bych pomoct : nevite nekdo jak zapisovat do variantnich poly ??
pr :

var A: variant;
begin

A := VarArrayCreate([0,4],varVariat);
A[0] := VarArrayCreate([0,4],varInteger);
A[0,0] := 1;
// a zde to da chybu
end;
Nevite jak tam zapsat ?? Do pole A[x] se da zapsat normalne, ale do dalsich to jiz nejde ...

Dik.
Jirka.

elementarny problem s C/S

[*] Jan �ebel�k <honza(zv)haes(tec)cz> - 10.3.1999 16:34:49

> > Hozna Sebelik psal o serveru jako o samostatne aplikaci.
> > Jasne, souhlasim. Je fajn pouzivat triggery a bussinnes rules na strane serveru.
> > Samozrejme budu oponovat (ale jen trosku). Tento pristup je nesikovny v
> > pripade, ze databazovy server je 'za hory, za lesy' a neni k nemu elektronicke
> > cesty.

[Honza Sebelik]
Pokud je server "za hory, za lesy", pak to v vlastne neni Client/Server aplikace.
Klient je v podstate "odstrizen" od databaze.
Podobnou logiku maji vicevrstve aplikace.
Nejak se teto logice prace s daty rika, ale ja si nemohu vzpomenout jak.
Klient tedy nacte data, mozna se i "odstrihne", provede update, "pripoji se" a posle to zpatky na server.

Nicmene i tady lze konflikty mezi uzivateli osetrit:
Pouziji napr. ClientDataSet.

Nactu data.
Aby to bylo hodne "za hory, za lesy", udelam SaveToFile a data si vezmu na vikend domu.
Data opravim (LoadFromFile, oprava, SaveToFile, nepotrebuji BDE!) a vezmu si je zpet do prace.
Opravena data nactu (LoadFromFile).
A poslu je na server (ApplyUpdates).
Pokud mi data na serveru mezitim nekdo zmenil/vymazal, dostanu na OnReconcileError na vyber, co s tim udelat (raCancel, raRefresh, raMerge, raCorrect, ...).

Jednoduche, krasne, bezchybne (az na tu licenci na dbclient.dll).

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes(tec)cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 931
=========================================

Kl�vesa F1

[*] SPELZA s.r.o. <spelzasro(zv)brno(tec)comp(tec)cz> - 10.3.1999 16:38:50

Je�t� jeden probl�m m�m u aplikace pro D4. Nefunguje mi F1 pro vyvol�n�
helpu u hlavn�ho formul��e. Nev�te jak na to?

D�ky. Jara.

elementarny problem s C/S

[*] Ale� Kle�ka - 10.3.1999 16:38:39

Sorry, ale asi jsme si nerozumeli ( komunikacni sum ),
jak uz tady bylo naznaceno, mas nekolik moznosti:

Nacist zaznamy a:
a) pokud se uzivatel rozhodne je editovat ( napriklad po stisku
nejakeho butonu ), tak proste tyto zaznamy zamknout v databazi ( nevyhoda -
pokud se nekdo rozhodne neco editovat a bude na delsi dobu, tak se z toho
ostatni zcvoknou - viz. pripad s lekari - tam kdyby meli cekat treba 0,5-1
hodinu nez nekdo nekde neco opravi - no to Te potes )

b) pokud uzivatel zmeni nekterou polozku, tak si zkontrolovat,
jestli dany zaznam nebyl mezitim v databazi zmenen nekym jinym a pokud ano,
tak to oznamit uzivateli a nacist OPRAVENY zaznam ( system, kdo driv prijde
... ) - potom ten tvuj uzivatel sam zvazi jestli je to ta zmena, kterou
napr.chtel delat sam ( a nestihl to ), nebo jestli ma znovu zmenit nejakou
polozku a pokusit se znovu zaznam ulozit ( tohle reseni je vhodne, protoze
sam uzivatel ROZHODUJE, co s tim vlastne 'budeme robit', ale je nepouzitelna
v pripade, kdy hrozi, ze tato 'kolizni' situace bude nastavat casto )
//
c) systemem 'oddelenych' zaznamu ( viz. muj predchozi mail ) oddelit
zaznamy od jednotlivych uzivatelu a tim jim umoznit editovat pouze urcite
zaznamy

Kazda metoda ma svoje pro a proti a je nutne zvazit, ktera je vhodnejsi
pro konkretni pripad.

S pozdravem

Ales Klecka
{ a.klecka(zv)email(tec)cz }


-----P�vodn� zpr�va-----
Od: Martin Kubecka <martin.kubecka(zv)amenit(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 16:17
P�edm�t: Re: Fw: elementarny problem s C/S


Ale� Kle�ka wrote:

> Ahoj,
> rozebirate tady problem, ktery je dost slozite resit na obecne rovine.

Jo a hlavne uplne jiny problem, nez ktery me trapi a to JAK nejlepe zajistit
moznost editace jednoho zaznamu jednim uzivatelem v jednom casovem okamziku.
At
uz je to pro pacienty a nebo me o to pozadal Batman a 007. Proste jde o neco
jineho, nez o pacose ;-)

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

adresar moji aplikace

[*] Tom� R��i�ka - 10.3.1999 17:00:32

Ze me to hned nenapadlo, a takovou praci jsem si s tim dal .... :-)
-----P�vodn� zpr�va-----
Od: iturcan(zv)gamo.sk <iturcan(zv)gamo.sk>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 15:24
P�edm�t: Re: adresar moji aplikace


>
>
>
>>Nedavno jsem neco takoveho delal>
>>Pouzij funkci
>>
>>DWORD GetModuleFileName(
>>
>> HMODULE hModule, // handle to module to find filename for
>> LPTSTR lpFilename, // pointer to buffer for module path
>> DWORD nSize // size of buffer, in characters
>> );
>>
>>hModule nastav na HInstance tve aplikace
>>a v lpFilename dostanes cestu+filename. Odfiltruj filename a mas adresar,
>>odkud to bylo spusteno
>>
>
>Hmm,
>
>da sa to aj jednoduksie co tak:
>
> Directory := extractfiledir (application.ExeName)
>
>
>Ivan Turcan
>
>
>>-----P�vodn� zpr�va-----
>>Od: Richard Valny <richard.valny(zv)oku-st(tec)cz>
>>Komu: 'delphi-l(zv)fwd(tec)cz' <delphi-l(zv)fwd(tec)cz>
>>Datum: 10. b�ezna 1999 11:39
>>P�edm�t: adresar moji aplikace
>>
>>
>>>Ahojky pratele a pratelky,
>>>Jaka funkce vrati adresar (nebo i kompletni cestu), odkud byla spustena
>>>moje aplikace?
>>>
>>>P.S. Vim, ze to zde bylo nedavno, ale nejak se nemohu dostat na
>>www.delphi(tec)cz s archivem a muj archiv mi vcelku nedavno spadl :-((
>>>
>>>===========mozno pouzit PGP==============
>>>Richard Valny richard.valny(zv)oku-st(tec)cz
>>>Okresni urad Strakonice tel. 0342-441 l. 216
>>>Smetanova 533 fax. 0342-21208
>>>386 22 STRAKONICE FiDoNet 2:423/35
>>>===========mozno pouzit PGP==============
>>>
>>>... Windows nemohou byti virem, nebot virus je napsan inteligentne a neco
>>>dela
>>>
>>>
>
>

Znakova stranka

[*] Milan Fiedler <milanf(zv)rts(tec)cz> - 10.3.1999 17:11:47

Toto je zpr�va ve form�tu MIME obsahuj�c�n�kolik ��st�.

Nez to zacnu delat rad bych slysel vase nazory,

Mam delat prevod z jedne znakove stranky tabulky do jine.
Co mi poradite.

Milan Fiedler


elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 17:45:48

Petr Zahradnik wrote:

> > Proste v realu je to jeden papir, ktery si lidi predavaji mezi sebou a
> > dopisuji tam sve zavery. Jiste, muzu to rozdelit do dalsi tabulky zprav
> > 1:N, ale PROC bych to delal? Maximalne, abych cely proces uzivatelum
> > zneprehlednil.
>
> Protoze nekdo muze (byt omylem) neco vymazat a je tu pruser.

To je pravda. To ovsem plati obecne (uznavam, ze pokud budu zpravu delit do
nekolika zaznamu, tak dosahnu lepsiho osetreni - kazdy si smaze jen co si
napsal). Ovsem dostanu se do problemu, kdyz bude chtit pedagog pripsat neco nad
text psychologa apod.

> Ale i tak neni duvod, proc by to mel menit pedagog psychologovi...

Viz moje predchozi veta.

> > Tomu zabranit nechci, naopak, pokud si to prvni bude chtit zmenit, tak mam
> > jistotu, ze uvidi aktualni udaje a ne nejaka stara data.
>
> Kdepak, ty mas jednu jedinou jistotu - ze kdyz pedagog zacne psat
> zpravu, zaznam bude locknuty a nikdo se na nej nedostane. Takze
> kdyz prijde za pedagogem nejaka slecinka, po celou dobu erotickych
> hratek bude zaznam nedostupny, mozna se to zvrhne a bude nedostupny
> nekolik dni... V podstate nic jineho to neresi.

Ale dostane. Rozhodne muze cist. No a protoze pri pokusu o editaci uvidi, KDO a
KDY to zamknul, tak mu pujde vynadat. No a pokud by snad nahodou byl pedagog se
slecinkou zamceny ;-) tak si necham zobrazit tabulku se zamky - najdou ten od
psychologa a sejmu ho. No a pak si muzu editovat do aleluja. No a az si pedagog
uzije, tak bude pokracovat a pri ulozeni mu to rekne, ze uz to nekdo zmenil a da
mu to treba moznost ulozit (prepsat) zaznam nebo zrusit zmeny. Opet upozornuju,
ze se nejedna o zamek ale o priznak (flag, nebo jak tomu chcete rikat - tzn.
nezamyka se to na db serveru - nic to neblokuje - coz v tomto pripade je mozne).

> > To je PRESNE to co chci. Tu zpravu nemuze patlat pet lidi najednou (oni
> > musi vychazet z vysledku ostatnich lidi - tzn. musi je videt pred sebou a
> > to v aktualni podobe).
>
> Ale to lze zajistit daleko jednoduseji a elegantneji. Mimochodem,
> pokud pedagog neco napise, psycholog dopise a pedagog zase zmeni,
> tak nic nepoznas... Ale nez pedagog neco napise, psycholog to jeste
> neuvidi, takze ja nevidim, kde by byl problem...

No jo porad :-))) O tomhle to prece neni. Urcite se da najit reseni, kterym
(podle me pracne, podle nekoho jineho treba ne) lze tento problem obejit. Me se
hrozne libi, jak se mi snazite nacpat jine databazove reseni, fajn, beru a jsem
tomu rad a dekuju, ale jde mi spise o to, jak vyresit pristup jednoho uzivatele
na jeden zaznam v jednom casovem okamziku. Shodou okolnosti delame (podobne jako
Zbysek) neco jako dispecersky program, kde tuto funkci potrebuju v jednom
pripade taky. Jak to resime jsem uz popisoval, ale taky s tim nejsem dvakrat
spokojen, protoze to muze obcas zlobit (za rok a pul provozu se to teda jeste
nestalo - takze bych to ze statistickeho hlediska mohl vyhlasit jako stabilni
;-). Takze co s tim? (proboha jen mi uz nepiste, jak mam prekopat datovou
strukturu ;-)

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 17:51:28

Pavel Cisar wrote:

> Ano, pro kazdy problem existuje minimalne jedno elegantni, levne
> a naprosto spatne reseni.

Kloubouk dolu, udelat z tak mala udaju tak dokonalou analyzu pouziteho
reseni ja teda neumim :-)

> Je nutne korektne sladit pozadavky uzivatelu s vlastnostmi
> pouzitych technologii. Pokud uzivatele nemaji penize na korektni
> reseni, pak nemaji penize ani na SQL server. Udelej jim to v
> Paradoxu a mas po problemech.

Jeste Paradox si budu hazet do site ne? To uz si radeji hodim rovnou
masli :-))))

> Zaznelo zde vice nez jedno ROZUMNE reseni. Nemuzu za to, ze se ti
> zadne nelibi.

Nejak jsem prehledl reseni problemu: jeden zaznam smi editovat v jednom
okamziku jen jeden uzivatel. Krome toho, ze to nemam chtit, ze mam
prekopat databazovou strukturu popr. prejit na Paradox jsem se nic
noveho nedozvedel :-(. A na nic jineho jsem se v podstate neptal. Asi mi
holt nekdo maze maily :-)))

> Mnoho zdaru.

Diky, snazim se... ;D

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 10.3.1999 17:58:05

Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:

> A jeste bych chtel upozornit ze nepouzivam zamky (databazove), ale
> priznaky (coz mi prijde nekdy docela vyhodne, ale bohuzel je potreba nejak
> vyresit problemy: baba sla na obed a spadnul klient).

No to je prave tragedie. Tim jsi degradoval Client/Server databazi
na ciste souborovou. Ano, tam se museji resit ruzne priznaky,
pecete a podobne silenosti. Jenze od toho si kupujeme SQL Servery,
abychom (a) zajistili integritu dat, (b) prenesly zpracovani na
server, (c) mohli jednoduseji programovat.

(a) Integrita dat neznamena jen, ze kdyz chcipne pocitac, kde je
umisten databazovy soubor, databaze nechcipne, ale pojede dal.
Integrita hlavne znamena, ze vzdy bude funkcni kompletni databaze
se vsemi tabulkami uvnitr. To znamena, ze kdyz faktura je rozdelena
do dvou tabulek (hlavicka a polozky), nebudou tam polozky bez
hlavicky a naopak. Take to znamena, ze kdyz bude ve fakture odkaz
na zakaznika, ten zakaznik bude fyzicky existovat v tabulce
zakazniku.

(b) To znamena nejen to, ze se o databazovy soubor stara SQL Server,
ale take to, ze klient primo nepristupuje na data. Tedy dava jen
dotazy a prikazy. Klient prenese vetsinu prace na server, maka
server a maka dobre. Pokud je potreba neco udelat, klient to
nedela, jen da pokyn, postara se o to server. Takze zadne priznaky,
protoze databaze na serveru musi byt v dokonalem poradku i v pripade,
ze klient (1) chcipl, (2) obsluha klienta sla na obed nebo do
trafiky, (3) s databazi pracuje jiny software, nez jsi udelal Ty,
(4) na databazi se napojuje trouba s ISQL programkem a nevi, co tam
ma delat...

(c) Misto sloziteho kusu programu, ktery obnasi 250 radku kodu,
pouzijes jednodussi SQL dotaz/prikaz/vlozenou proceduru, a o toto
se postara server. O databazi se ma starat server, ne klient.
Nejde jen o bity na disku, ale o celou databazi.

> Zacinam mit pocit, ze misto abychom spolecne nasli nejake pripadne reseni
> jak v nekterych opravnenych pripadech zajistit praci jednoho uzivatele na
> jednom zaznamu v jednom casovem okamziku (a takove pripady v praxi
> existuji), tak se hledaji alternativy v navrhu databazi apod (tim ji
> nechci v zadnem pripade podcenovat). misto treba v nejake nove technologii
> nebo v nejakem peknem napadu. Zatim jedinny, kdo byl schopen neco vymyslet

No to je prave ono! Ja bych to specifikoval jinak - misto abys
uznal, ze database design je uplne spatny, a zacal databazi
predelavat, radeji se zabyvas necim, co je problemem. Hodne lidi
Ti tu rika, ze ten navrh je spatny a navrli jsme Ti reseni
v jinem postaveni databaze. Ale Ty trvas na svem a hledas reseni
tam, kde to bude znamenat zpomaleni databaze a nespolehlivost.
Pritom mala zmena SQL databaze by ve Tvem pripade znamenala zcela
jednoznacne mnoho prinosu - vyloucil bys zamky, ziskal rychlost
serveru, zajistil konzistenci dat apod.

A to si prosim uvedom, ze resis problem, ktery je spise urcen pro
souborove databaze. Uz na prvni pohled je videt, ze to neni moc
koser. Vem Paradox, zamkni radek a edituj si. V pohode, na to
vubec nepotrebujes SQL Server. A ani na to neni vhodny SQL Server.

Jednou, az treba budes delat database design (to neni jen pridani
daneho poctu sloupcu do tabulek) SQL databaze, ktera se ma plne
replikovat z hlavni databaze bezici na serveru treba na 5 notebooku,
ktere si majitele odnaseji domu nebo na sluzebni cesty, aby na nich
porizovali data, ale vzapeti se pripojili a data aktualizovali,
pak si na me vzpomenes. To budes takovy problem resit do nekonecna,
protoze replikovanou databazi nezamknes ani omylem. Ja Ti nechci
radit, ale pokud se chces zabyvat SQL Servery, tedy opravdu jako
tak, ze ne jen pouzivat SQL dotazy a skladiste dat, pak bych se
asi spise zkusil zamyslet na tim jinym resenim. Bude Ti to jednou
k dobru. Protoze kdyz si to vyzkousis dnes na necem, co sice jde
dnes udelat souborovym zpusobem, budes aspon vedet, na cem jsi.
Tady v konferenci mas spoustu chytrych lidi, kteri Ti poradili, jak
se to opravdu dela, tak toho vyuzij, kdyz to mas zadarmo.

> byl vetsinou z vas opovrhovany builder Martin Fronek se sitovym zamkem. V
> tom bych videl asi nejefektivnejsi reseni tohoto problemu pokud se to
> podari implementovat jako soucast aplikacniho serveru pro vicevrstve
> aplikace.

Vzdyt jsi v jedne z minulych zprav psal, ze SQL Server pouzivas
jako skladiste dat, tedy nevyuzivas vubec vymozenosti SQL Serveru.
Tak proc ted mluvis o aplikacnim serveru, trivrstve architekture?
Kdyz nepouzivas poradne ani dvojvrstvou... Aplikacni server dela
neco uplne jineho. Aplikacni server take nema co hrabat primo
do dat. Sprava dat SQL Serveru ma vzdy byt prave na SQL Serveru.

> Ja mam pocit, ze bud vsichni pouzivate uplne neco jineho nez Delphi a SQL
> servery a nebo mate nejakou tajnou fintu o ktere nevim :-)

Kdepak, ale spravne navrzena SQL databaze, to je zaklad uspechu.
Pokud tam udelas chybu, da Ti dost zabrat naprogramovat zbytek...
Za dob souborovych databazi jsi jednoduse vytvoril tabulku
a bylo hotovo, ale na SQL se musi i trochu myslet, kdyz to ma
za neco stat. Takze kdo spravne navrhne databazi, nema potom
moc starosti s takovymi problemy.

> Jak teda konkretne resite problem, kdyz jeden radek upravuje vice
> uzivatelu najednou a pak jej chteji ulozit???? Berme ze uzivatele maji

Jde o to, co myslis tou upravou - pokud "baba si otevrela zaznam
a sla na pivko", tak to neresime, to opravdu ne... Pokud se jedna
o dve rychle transakce, tak to je resitelne. Mas napriklad
ISOLATION LEVELS apod. Uroven 3 ti napr. zajisti plnou seriovost,
i kdyz zpomali server.

> stejna privilegia (napr. dva ucetni v podniku - jeden meni treba cenu
> faktury a druhy meni datum splatnosti). Krome TClientDataSet z MIDASu
> nevim o zadnem rozumnem reseni primo v Delphi.

No tak to je jednoduche, ne? Sice neni normalni, aby se tohle delo,
ale da se to snadno udelat:

UPDATE FAKTURA SET SPLATNOST = ... WHERE CISLO = ...; COMMIT;

UPDATE FAKTURA SET CENA = ... WHERE CISLO = ...; COMMIT;

Takovato zmena dopadne vzdy dobre, at uz se provedou transakce
v jakemkoliv poradi. Nebo ne? Samozrejme, pokud tam suse posles
cely radek, tak to dopadne dost blbe, kdyz sis ho nacetl pred
10 minutam a nekdo ho treba zmenil nebo vymazal... Dalsi vec je,
ze jeste navic na serveru mohou byt ulozeny ruzne kontroly na
splatnost (ze treba nesmi byt mensi nez datum vystaveni apod.)
a zrovna tak treba cena muze byt vypocitana na serveru z cen
bez DPH, DPH apod.


S pozdravem
Petr Zahradnik, pocitacovy expert

Autorizovany dealer TurboPower Software... knihovny pro Delphi
==============================================================
=== Petr Zahradnik - Computer Laboratory ===
=== Obvodova 740/14, PO BOX 15, 400 07 Usti nad Labem 7 ===
=== telefon: 047-5500610, telefon/fax: 047-5501627 ===
=== mobilni telefon GSM (hotline): 0602-409601 ===
=== http://www.clexpert(tec)cz/ clexpert(zv)clexpert(tec)cz ===
==============================================================
ICQ: 21215917, PGP vitano


elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 18:03:26

Vodnansky David wrote:

> Jiste, ale tohle je pouze integrita, kterou ovsem tezko zajistis to, co
> trigger vetsinou dela - a to smazani tech podrizenych zaznamu predtim,
> nez se smaze master.

Samozrejme. Ovsem nepouzivam obvykle kaskadovy delete. Maloktery uzivatel
si dokaze uvedomit, co zpusobi smazanim treba jedne firmy z adresare. Tam
kde je to potreba samozrejme mohou nastoupit triggery.

> Urcite zase nekdo zacne argumentovat, ze v nektere databzi jde i tohle
> (on delete cascade) pres constraint, ale neni to obecna vlastnost a
> beztriggeru to asi pujde dost tezko.

:-)

Jeste jedna vec, na kterou neustale narazim je zjisteni id (identity,
autoincrement) prave zvoleneho zaznamu. Na MS SQL je mozne tuto hodnotu
zjistit pres globalni promennou (zv)(zv)IDENTITY. Jelikoz tato hodnota se meni po
kazdem insertu, tak je obcas docela nechutne odladit triggery tak abych
ziskal tu hodnotu IDENTITY kterou potrebuji. I z tohoto duvodu davam nekdy
prednost transakci, skladajici se z nekolika prikazu (ci ulozenych
procedur), spoustene z klienta nez resit totez pomoci triggeru (tech tri co
MS SQL ma - jine servery na tom jsou obvykle trochu lepe - co jsem zaslechl
;-)

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 10.3.1999 18:08:52

Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:

> > Protoze nekdo muze (byt omylem) neco vymazat a je tu pruser.
>
> To je pravda. To ovsem plati obecne (uznavam, ze pokud budu zpravu delit
> do nekolika zaznamu, tak dosahnu lepsiho osetreni - kazdy si smaze jen co
> si napsal). Ovsem dostanu se do problemu, kdyz bude chtit pedagog pripsat
> neco nad text psychologa apod.

Tak to je pak uloha spise pro Microsoft Word a ne pro SQL Server...
posles disketu kolegovi a on to zedituje :-))) Ne, vazne, tohle
neni rozhodne obvykle... rikal jsi, ze postupuji postupne, ze
druhy se vyjadruje k tomu, co napsal prvni, takze co ma ten
druhy co psat na prvniho?

> > Kdepak, ty mas jednu jedinou jistotu - ze kdyz pedagog zacne psat
> > zpravu, zaznam bude locknuty a nikdo se na nej nedostane. Takze
> > kdyz prijde za pedagogem nejaka slecinka, po celou dobu erotickych
> > hratek bude zaznam nedostupny, mozna se to zvrhne a bude nedostupny
> > nekolik dni... V podstate nic jineho to neresi.
>
> Ale dostane. Rozhodne muze cist. No a protoze pri pokusu o editaci uvidi,
> KDO a KDY to zamknul, tak mu pujde vynadat. No a pokud by snad nahodou byl

Pak proc sit a SQL Servery? Proc ne potrubni posta? A naval disketu...

> pedagog se slecinkou zamceny ;-) tak si necham zobrazit tabulku se zamky -
> najdou ten od psychologa a sejmu ho. No a pak si muzu editovat do aleluja.

Takze psycholog ma pristup na zamky a muze suse zamek zrusit?
No jo, tak to je ale system na dve veci, to se na me nezlob.
Chudak pedagog, ktery mezi temi romanky ve sve kancelari napsal
10 strankovou zpravu v dobre vire, ze je zamknuto, a ted o tech
10 stranek prijde, protoze psycholog dokaze zamek smazat...

> No a az si pedagog uzije, tak bude pokracovat a pri ulozeni mu to rekne,
> ze uz to nekdo zmenil a da mu to treba moznost ulozit (prepsat) zaznam
> nebo zrusit zmeny. Opet upozornuju, ze se nejedna o zamek ale o priznak
> (flag, nebo jak tomu chcete rikat - tzn. nezamyka se to na db serveru -
> nic to neblokuje - coz v tomto pripade je mozne).

No prave, to je pruser. Kdyz jde tohle, tak to pak nemusis vubec
resit v programu, ale staci vydat interni pokyny pro praci
s databazi v tistene podobe dostupne na kazdem pracovisti:

- chcete-li zmenit zaznam, ktery je zamknuty, vyckejte 10 minut
a potom ho zruste, muzete editovat

> > Ale to lze zajistit daleko jednoduseji a elegantneji. Mimochodem,
> > pokud pedagog neco napise, psycholog dopise a pedagog zase zmeni,
> > tak nic nepoznas... Ale nez pedagog neco napise, psycholog to jeste
> > neuvidi, takze ja nevidim, kde by byl problem...
>
> No jo porad :-))) O tomhle to prece neni. Urcite se da najit reseni,
> kterym (podle me pracne, podle nekoho jineho treba ne) lze tento problem
> obejit. Me se hrozne libi, jak se mi snazite nacpat jine databazove
> reseni, fajn, beru a jsem tomu rad a dekuju, ale jde mi spise o to, jak
> vyresit pristup jednoho uzivatele na jeden zaznam v jednom casovem

No doprkynka, kdyz mas SQL Server, tak se Ti snazime vysvetlit,
abys vyuzil jeho moznosti za ty prachy... nic vic. To je jako
kdyby Ti zapadlo auto do prikopu, Ty jsi mel traktor, ale nechtel
by sis to tim traktorem vytahnout, prestoze on by to dokazal, ale
radeji bys zavolal odtahovku z druheho konce republiky...

> okamziku. Shodou okolnosti delame (podobne jako Zbysek) neco jako
> dispecersky program, kde tuto funkci potrebuju v jednom pripade taky. Jak
> to resime jsem uz popisoval, ale taky s tim nejsem dvakrat spokojen,
> protoze to muze obcas zlobit (za rok a pul provozu se to teda jeste
> nestalo - takze bych to ze statistickeho hlediska mohl vyhlasit jako
> stabilni ;-). Takze co s tim? (proboha jen mi uz nepiste, jak mam prekopat
> datovou strukturu ;-)

Udelej ty ochrany na serveru, at se o to stara server, co je
klientovi do konzistence dat? Co Ti brani editovat ne po celych
radcich, ale po jednotlivych sloupcich?


S pozdravem
Petr Zahradnik, pocitacovy expert

Autorizovany dealer TurboPower Software... knihovny pro Delphi
==============================================================
=== Petr Zahradnik - Computer Laboratory ===
=== Obvodova 740/14, PO BOX 15, 400 07 Usti nad Labem 7 ===
=== telefon: 047-5500610, telefon/fax: 047-5501627 ===
=== mobilni telefon GSM (hotline): 0602-409601 ===
=== http://www.clexpert(tec)cz/ clexpert(zv)clexpert(tec)cz ===
==============================================================
ICQ: 21215917, PGP vitano


elementarny problem s C/S

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 10.3.1999 18:14:31

Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:

> > Zaznelo zde vice nez jedno ROZUMNE reseni. Nemuzu za to, ze se ti
> > zadne nelibi.
>
> Nejak jsem prehledl reseni problemu: jeden zaznam smi editovat v jednom
> okamziku jen jeden uzivatel. Krome toho, ze to nemam chtit, ze mam
> prekopat databazovou strukturu popr. prejit na Paradox jsem se nic noveho
> nedozvedel :-(. A na nic jineho jsem se v podstate neptal. Asi mi holt
> nekdo maze maily :-)))

:-))) Martine, to je pravda, ze jsi nedostal zadne rozumne reseni
"jeden zaznam smi v jeden okamzik editovat jeden uzivatel", ale
dostal jsi X navodu, jak vyresit primarni problem, abys toto
nepotreboval. Sestavim Ti takovy graf:

PRIMARNI PROBLEM - RESENI PROBLEMU - REALIZACE RESENI

Ty mas PRIMARNI PROBLEM a vymyslel sis RESENI PROBLEMU, ktere neni
zrovna moc elegantni, takze mas ted SEKUNDARNI PROBLEM pri REALIZACI
RESENI. Takze to vypada asi takto:

PRIMARNI PROBLEM - SPATNE RESENI - SEKUNDARNI PROBLEM - NEREALIZACE RESENI

Padlo tu X lepsich reseni:

PRIMARNI PROBLEM - JINE RESENI - RALIZACE RESENI

Co je lepsi?


S pozdravem
Petr Zahradnik, pocitacovy expert

Autorizovany dealer TurboPower Software... knihovny pro Delphi
==============================================================
=== Petr Zahradnik - Computer Laboratory ===
=== Obvodova 740/14, PO BOX 15, 400 07 Usti nad Labem 7 ===
=== telefon: 047-5500610, telefon/fax: 047-5501627 ===
=== mobilni telefon GSM (hotline): 0602-409601 ===
=== http://www.clexpert(tec)cz/ clexpert(zv)clexpert(tec)cz ===
==============================================================
ICQ: 21215917, PGP vitano


elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 18:23:45

Pavel Cisar wrote:

> Haj hou!

Trpajzlici jdou :-)

> Mily brachu, v ramci dlouhe diskuse tu padlo mnoho moznych
> reseni. Staci si vybrat. Pokud pouzivas MS SQL Server (mam pocit,
> ze jsi neco takoveho naznacoval), pak ti vrele doporucuji zdaleka
> se vyhnout metode "zahajit editacni transakci (zmenit priznak
> apod.), vesele editovat a potvrdit (za hodinu)". Je to sice
> nejjednodussi, zato ale nejhorsi mozne reseni (plati obecne ve
> svete SQL).

Tak to je snad jasne.

> Jina a mnohem lepsi reseni samozrejme existuji (rada
> jich zde zaznela, pripomenu snad jen externi zamykani napr. pres
> filesystem, sdilenou DBF tabulku apod), jsou vsak vzdy pracnejsi
> nez vyse uvedene (vcetne lepsi formalizace problemu a spravneho
> navrhu databaze).

Jeste bych pridal napr. moznost zasilani zprav mezi aplikacnim serverem
a klientem.

> Neni tedy nutne narikat nad problemem, ale
> staci pouze zalistovat archivem konference neb tva otazka byla
> jiz 100x zodpovezena.

Ja nad problemem nenarikam (ostatne ja to mam vyreseno a ver nebo ne tak
to dokonce i funguje). Chtel jsem se proste poradit s odborniky, jak
resi tento problem oni. Ja nemam patent na rozum (na to tu mame jine
borce).

Konecne si nastinil mozna reseni (u kterych je samozrejme mnoho
nezodpovezeneho) Napr. pouziti externi tabulky s priznaky (na DBF bych
teda rozhodne netrval ;-) - co v pripade kolapsu klienta? Ja nevim, ja
jsem si neco vymyslel a poslal do konference (prispevek Problemy C/S 1.0
- ke kteremu se az na Zbyska nevyjadril nikdo - proc, to neumim
posoudit), abych slysel nejaky fundovany nazor. Zamykani pres file
system si v C/S (o kterem vsechno je) asi muzu strcit za klobouk.

> Pokud se ti odpovedi, kterych se ti
> dostalo, nezamlouvaji, je problem patrne nekde jinde.

Ale kde? Tot otazka ;-)

> Mnoho zdaru.

Tobe taky a dik za tvuj cas (myslim to uprimne)

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 18:36:59

Ale� Kle�ka wrote:

> Nacist zaznamy a:
> a) pokud se uzivatel rozhodne je editovat ( napriklad po stisku
> nejakeho butonu ), tak proste tyto zaznamy zamknout v databazi ( nevyhoda -
> pokud se nekdo rozhodne neco editovat a bude na delsi dobu, tak se z toho
> ostatni zcvoknou - viz. pripad s lekari - tam kdyby meli cekat treba 0,5-1
> hodinu nez nekdo nekde neco opravi - no to Te potes )

Jasne, proto mi prijde sikovnejsi, vytvorit specialni tabulku zamku, kde se da v
nejhorsim pripade "zamek" odstrelit. Akorat ze se mi toto reseni zase tak moc
dobre nezda, kdyby nekoho napadlo neco lepsiho, sem s tim ;-)

> b) pokud uzivatel zmeni nekterou polozku, tak si zkontrolovat,
> jestli dany zaznam nebyl mezitim v databazi zmenen nekym jinym a pokud ano,
> tak to oznamit uzivateli a nacist OPRAVENY zaznam

Presne. Jak to resit v Delphi? Jak nactu do stavajiciho DBGridu (napr,) jeden
urcity zaznam? Tahat zase vsechny mi pripada nesmyslne. Jistou sanci vidim v ADO
(tzn. pripadna komponenta by mela mit moznost nacteni jednoho zaznamu).

> ( system, kdo driv prijde
> ... ) - potom ten tvuj uzivatel sam zvazi jestli je to ta zmena, kterou
> napr.chtel delat sam ( a nestihl to ), nebo jestli ma znovu zmenit nejakou
> polozku a pokusit se znovu zaznam ulozit ( tohle reseni je vhodne, protoze
> sam uzivatel ROZHODUJE, co s tim vlastne 'budeme robit', ale je nepouzitelna
> v pripade, kdy hrozi, ze tato 'kolizni' situace bude nastavat casto )

Jasne, zalezi na poctu uzivatelu a dane aplikaci. Tohle reseni se mi libi asi
nejvice. Hlavne by nemelo dochazet k lost updates. Tzn. zase konkretne v Delphi
reseni neni (krome TClientDataSet z MIDASu). Opet to vidim jako docela palcivy
problem....

> c) systemem 'oddelenych' zaznamu ( viz. muj predchozi mail ) oddelit
> zaznamy od jednotlivych uzivatelu a tim jim umoznit editovat pouze urcite
> zaznamy

Asi nejcistsi reseni, ktere ovsem nelze vzdy pouzit

> Kazda metoda ma svoje pro a proti a je nutne zvazit, ktera je vhodnejsi
> pro konkretni pripad.

Presne. Ted jeste mit moznost si v Delphi jednoduse nejakou z techto moznosti
vybrat (upravit pro kazdou z metod chovani podle potreb) a hotovo.

Dik

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Zbysek Hlinka <zhlinka(zv)login(tec)cz> - 10.3.1999 18:51:53

Hynek svatos wrote:

> > Jeden hacek byl v tom, ze to bezi na MS SQL, tedy zadne
> > BeforeXxx neexistuje.
> Pokud vim, tak v MS SQL existuji sice jen AftedDelete trigery, ale v
> techto trigerech se objevi virtualni tabulka Deleted, ktera obsahuje vety,
> ktere byly smazany. Muzes proto v klidu provadet akce spojene s mazanim. U
> trigeru na Insert a Update existuji analogicky tabulky Inserted (ano, i
> pro Update se jmenuje Inserted).

To ano. Presto mi rozliseni na Before a After prijde ponekud cistsi,
zejmena kdyz potrebujes zjistit nejakou hodnotu z teze tabulky, a
to bez hodnoty prave vkladane. Nekdy muze absence Before
zpusobit problemy v navrhu.


S pozdravem

Zbysek Hlinka
E-mail: zhlinka(zv)login(tec)cz, localizator(zv)localizator.com
Tel.: 02/795 29 56; GSM: 0603 551 282
Krystofova 1016, 149 00 Praha 4
CZ


elementarny problem s C/S

[*] Zbysek Hlinka <zhlinka(zv)login(tec)cz> - 10.3.1999 18:51:54

Polak Jiri wrote:

> triggeru je dostatecna. Zkusim se zamyslet nad situacemi, kdy
> je nutne rozlisovat before a after:
> 3) udrzovani ref. integrity
> - napr. kaskadovy delete: nechce se mi to hledat, ale pochybuji, ze by to
> neslo. A vubec - myslim, ze trigger AFTER DELETE nema zadny vyznam - je
> potreba pouze BEFORE DELETE.

Jak udelas napriklad toto? Mas tabulku T1 svazanou referencni
integritou s T2. V T1 jsou rodice, v T2 deticky. Kdyz vymrou
deticky, je treba se zbavit jejich rodice. Nenapada me nic lepsiho,
nez povesit na After Delete dotaz, zda jeste existuje v tabulce
nejake detatko, a pokud ne, zrusim i prislusneho rodice.
Upozornuji, ze na Before Delete toto nelze.


S pozdravem

Zbysek Hlinka
E-mail: zhlinka(zv)login(tec)cz, localizator(zv)localizator.com
Tel.: 02/795 29 56; GSM: 0603 551 282
Krystofova 1016, 149 00 Praha 4
CZ


DBGrid: Zistenie hodnoty v policku pocas editacie

[*] Jan �ebel�k <honza(zv)haes(tec)cz> - 10.3.1999 19:11:43

Predpokladam, ze vyuzijes udalost OnChange na prislusnem policku.
Nechces toho ale trochu moc?
Co to ma za smysl ovlivnovat POLICKO2 jeste pred ukoncenim editace POLICKO1?

Muzes sice to OnChange zavolat na OnKeyDown, na Timer nebo neco takoveho, ale nejdriv se zkus uklidnit.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes(tec)cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 931
=========================================
----------
> Odes�latel: Branislav Danko <danko(zv)basl.sk>
> Komu: 'delphi-l(zv)fwd(tec)cz'
> P�edm�t: DBGrid: Zistenie hodnoty v policku pocas editacie
> Datum: 10. b�ezna 1999 16:00
>
> Nazdar,
> potreboval by som poradit s tymto problemom: Mam v tabulke 2 policka, ktore su navzajom zavisle prostrednictvom urciteho vzorca, t.j. POLICKO1 = POLICKO2 * KONSTANTA a naopak POLICKO2 = POLICKO1 / KONSTANTA. Je teda mozne zadat niektore z nich a to druhe sa automaticky dopocita (takto to bolo specifikovane). Ak prave editujem POLICKO1, tak do policka POLICKO2 ukladam vypocitanu hodnotu, ak POLICKO2 editujem vypocitavam POLICKO1. Chcel by som, aby sa vypocitavana hodnota zobrazovala v druhom policku priebezne. Avsak hodnota Value sa editovanom policku zaktualizuje az ked preskocim na ine policko, resp. zaznam, teda to druhe policko neviem dovtedy vypocitat. Nevie mi niekto poradit, ako mam z policka precitat prave editovany text.
>
> Vdaka Brano.

adresar moji aplikace

[*] Jan Skopov� <jan.skopovy(zv)vol(tec)cz> - 10.3.1999 19:28:40

Jednodusi zpusoby:

// Vrati cestu i s nazvem programu odkud byl spusten
ParamStr(0);

// Vrati disk s dvojteckou na konci
ExtractFileDrive(ParamStr(0));

// Vrati nazev spusteneho programu (souboru)
ExtractFileName(ParamStr(0));

// Vrati priponu programu s teckou na zacatku
ExtractFileExt(ParamStr(0));

// Vrati pouze cestu s lomitkem na konci
ExtractFilePath(ParamStr(0));

// Vrati pouze cestu bez lomitka na konci
ExtractFileDir(ParamStr(0));

// DOSovsky Path z Windowsovskeho Path
function GetDosPath(winPath: String): String;
var PPath: Array[0..255] of char;
begin
Result := winPath;
try
GetShortPathName(PChar(winPath),PPath,SizeOf(PPath));
Result := String(PPath);
except end;
end;

Jan Skopovy

>

elementarny problem s C/S

[*] Ale� Kle�ka - 10.3.1999 19:37:46

Ahoj,
sorry, ale prestava me to lehce bavit.
Ty pripominky, ktery jsi dopsal k mym navrhum reseni prece lidi, kteri
kdy neco delali s C/S aplikaci znaji. To byl opravdu jen navrh a spis
informace pro ty, ktery nevedi kudy kam. Chtel jsem jen naznacit, ze zalezi
na KONKRETNIM PRIPADE.
Mam tim na mysli, ze velmi rad pomohu radou ( kdyz nahodou budu vedet
jak pomoci ), ale to pro me znamena, ze pokud chces poradit, tak uved
KONKRETNI SITUACI a muzeme se hnout z akademicky roviny na praktickou a pak
to bude mit nejaky prakticky efekt. S pozdravem

Ales Klecka
{ a.klecka(zv)email(tec)cz }


-----P�vodn� zpr�va-----
Od: Martin Kubecka <martin.kubecka(zv)amenit(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 19:12
P�edm�t: Re: Fw: Fw: elementarny problem s C/S


Ale� Kle�ka wrote:

> Nacist zaznamy a:
> a) pokud se uzivatel rozhodne je editovat ( napriklad po stisku
> nejakeho butonu ), tak proste tyto zaznamy zamknout v databazi
( nevyhoda -
> pokud se nekdo rozhodne neco editovat a bude na delsi dobu, tak se z toho
> ostatni zcvoknou - viz. pripad s lekari - tam kdyby meli cekat treba 0,5-1
> hodinu nez nekdo nekde neco opravi - no to Te potes )

Jasne, proto mi prijde sikovnejsi, vytvorit specialni tabulku zamku, kde se
da v
nejhorsim pripade "zamek" odstrelit. Akorat ze se mi toto reseni zase tak
moc
dobre nezda, kdyby nekoho napadlo neco lepsiho, sem s tim ;-)
.
.
.
Presne. Ted jeste mit moznost si v Delphi jednoduse nejakou z techto
moznosti
vybrat (upravit pro kazdou z metod chovani podle potreb) a hotovo.

( BRAVO mam radost zes dosel ke stejnemu nazoru jako ja - A.K. )

Dik

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

MAC vs everyone ;-) (was elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 19:45:39

Petr Zahradnik wrote:

> Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:
>
> > A jeste bych chtel upozornit ze nepouzivam zamky (databazove), ale
> > priznaky (coz mi prijde nekdy docela vyhodne, ale bohuzel je potreba nejak
> > vyresit problemy: baba sla na obed a spadnul klient).
>
> No to je prave tragedie. Tim jsi degradoval Client/Server databazi
> na ciste souborovou.

Kdyz to pouziju v databazi o 80 tabulkach pro jeden sloupec dvou tabulek tak mi
to jako nejaka velka degradace nepripada (ale je to vec nazoru).

> Ano, tam se museji resit ruzne priznaky,
> pecete a podobne silenosti. Jenze od toho si kupujeme SQL Servery,
> abychom (a) zajistili integritu dat, (b) prenesly zpracovani na
> server, (c) mohli jednoduseji programovat.
>
> (a) Integrita dat neznamena jen, ze kdyz chcipne pocitac, kde je
> umisten databazovy soubor, databaze nechcipne, ale pojede dal.

?? To snad s tim so pouzivam vubec nesouvisi. Integrita je zachovana 100%

> (b) To znamena nejen to, ze se o databazovy soubor stara SQL Server,
> ale take to, ze klient primo nepristupuje na data. Tedy dava jen
> dotazy a prikazy. Klient prenese vetsinu prace na server, maka
> server a maka dobre. Pokud je potreba neco udelat, klient to
> nedela, jen da pokyn, postara se o to server.

Presne toto je splneno.

> Takze zadne priznaky,
> protoze databaze na serveru musi byt v dokonalem poradku i v pripade,
> ze klient (1) chcipl, (2) obsluha klienta sla na obed nebo do
> trafiky, (3) s databazi pracuje jiny software, nez jsi udelal Ty,
> (4) na databazi se napojuje trouba s ISQL programkem a nevi, co tam
> ma delat...

Bod 1 a 2 je kolizni, to je pravda a neni to prave to co me dvakrat tesi. Ovsem
data jsou naprosto v poradku a je to korektni pro 3 a 4.

> (c) Misto sloziteho kusu programu, ktery obnasi 250 radku kodu,
> pouzijes jednodussi SQL dotaz/prikaz/vlozenou proceduru, a o toto
> se postara server. O databazi se ma starat server, ne klient.

Nevim o jine moznosti pristupovat na SQL server nez pomoci SQL prikazu. Pouze u
jedne tabulku spoustim po standardnich operacich INSERT, UPDATE, DELETE jeste
nejakou tu ulozenou proceduru (v transakci), ktera zajistuje ony priznaky ve
specialni tabulce s priznaky. Teoreticky je mozne to strcit do triggeru, ale
prakticky je to neprakticke (identity a spol.).

> No to je prave ono! Ja bych to specifikoval jinak - misto abys
> uznal, ze database design je uplne spatny,

Tak tedy uznavam...;-)

> a zacal databazi
> predelavat, radeji se zabyvas necim, co je problemem. Hodne lidi
> Ti tu rika, ze ten navrh je spatny a navrli jsme Ti reseni
> v jinem postaveni databaze. Ale Ty trvas na svem a hledas reseni
> tam, kde to bude znamenat zpomaleni databaze a nespolehlivost.

Furt lepsi 'zaseknuty' zaznam (nemoznost editace jednoho sloupce) nez Lost
Update. (v pripade blokovani 1.000 uzivatelu je to mozna zase naopak). Zde se
jedna o maximalne 10 uzivatelu.

> Pritom mala zmena SQL databaze by ve Tvem pripade znamenala zcela
> jednoznacne mnoho prinosu - vyloucil bys zamky, ziskal rychlost
> serveru, zajistil konzistenci dat apod.

??? Tak konzistenci mam zajistenou dobre, jedna ulozena procedura navic zase tak
velke zpomaleni neprinese (je to nemeritelny rozdil) a vyloucil bych zamky
(priznaky, at se to neplete s DB zamky) o ktere jsem usiloval ;-)

> A to si prosim uvedom, ze resis problem, ktery je spise urcen pro
> souborove databaze.

Takze to mam predelat na Paradox? :-)))

> Uz na prvni pohled je videt, ze to neni moc
> koser. Vem Paradox, zamkni radek a edituj si. V pohode, na to
> vubec nepotrebujes SQL Server. A ani na to neni vhodny SQL Server.

Rozhodne je vhodnejsi nez souborova databaze :-)

> Jednou, az treba budes delat database design

Jestli se k tomu ovsem nekdy dostanu...

> (to neni jen pridani
> daneho poctu sloupcu do tabulek) SQL databaze, ktera se ma plne
> replikovat z hlavni databaze bezici na serveru treba na 5 notebooku,
> ktere si majitele odnaseji domu nebo na sluzebni cesty, aby na nich
> porizovali data, ale vzapeti se pripojili a data aktualizovali,
> pak si na me vzpomenes. To budes takovy problem resit do nekonecna,
> protoze replikovanou databazi nezamknes ani omylem.

Kdyz se ti to pripojuje aspon obcas na server tak je to jeste sranda. Horsi kdyz
mas dve site (oddelene) a databaze se jednou denne synchronizuji pomoci e-mailu
a rozesilaji se jen zmenene udaje. Pak to teprve nabira ty spravne grady ;-)

> Ja Ti nechci
> radit, ale pokud se chces zabyvat SQL Servery, tedy opravdu jako
> tak, ze ne jen pouzivat SQL dotazy a skladiste dat, pak bych se
> asi spise zkusil zamyslet na tim jinym resenim. Bude Ti to jednou
> k dobru. Protoze kdyz si to vyzkousis dnes na necem, co sice jde
> dnes udelat souborovym zpusobem, budes aspon vedet, na cem jsi.
> Tady v konferenci mas spoustu chytrych lidi, kteri Ti poradili, jak
> se to opravdu dela, tak toho vyuzij, kdyz to mas zadarmo.

Clovece, ty uz mluvis jako kniha :-) Budu to mit na pameti.

> > byl vetsinou z vas opovrhovany builder Martin Fronek se sitovym zamkem. V
> > tom bych videl asi nejefektivnejsi reseni tohoto problemu pokud se to
> > podari implementovat jako soucast aplikacniho serveru pro vicevrstve
> > aplikace.
>
> Vzdyt jsi v jedne z minulych zprav psal, ze SQL Server pouzivas
> jako skladiste dat, tedy nevyuzivas vubec vymozenosti SQL Serveru.

Ja nerikal, ze nevyuzivam jeho vymozenosti. Jen moc nepouzivam triggery ;-)

> Tak proc ted mluvis o aplikacnim serveru, trivrstve architekture?
> Kdyz nepouzivas poradne ani dvojvrstvou... Aplikacni server dela
> neco uplne jineho. Aplikacni server take nema co hrabat primo
> do dat. Sprava dat SQL Serveru ma vzdy byt prave na SQL Serveru.

Co furt myslis tim 'nema hrabat primo do dat'. To nejak jde???? Mimo SQL dotazy?

Jinak o trivrstve mluvim proto, ze by tento problem sel resit efektivne pomoci
aplikacniho serveru.

> Kdepak, ale spravne navrzena SQL databaze, to je zaklad uspechu.
> Pokud tam udelas chybu, da Ti dost zabrat naprogramovat zbytek...
> Za dob souborovych databazi jsi jednoduse vytvoril tabulku
> a bylo hotovo

??? no nevim, mozna na Paradoxu nebo DBase. Ja zacinal pred par lety s Accessem
a ten ma spis blize k SQL serveru nez k souborove databazi a nerekl bych, ze by
stacilo namlatit tabulky.

> , ale na SQL se musi i trochu myslet, kdyz to ma
> za neco stat. Takze kdo spravne navrhne databazi, nema potom
> moc starosti s takovymi problemy.

Zkusim nekde sehnat mozek ;-)

> > Jak teda konkretne resite problem, kdyz jeden radek upravuje vice
> > uzivatelu najednou a pak jej chteji ulozit???? Berme ze uzivatele maji
>
> Jde o to, co myslis tou upravou - pokud "baba si otevrela zaznam
> a sla na pivko", tak to neresime, to opravdu ne... Pokud se jedna
> o dve rychle transakce, tak to je resitelne. Mas napriklad
> ISOLATION LEVELS apod. Uroven 3 ti napr. zajisti plnou seriovost,
> i kdyz zpomali server.

Takze bud to ten druhy tomu prvnimu prepise (lost update) a nebo mu to vynada ze
uz to nekdo zmenil, zrusi se mu zaznam a musi to psat znova? Tak si to myslel?
Tomu ja nerikam user friendly. A muj nazor je, ze software ma byt pro lidi. A ne
o limitech nejakych technologii.

> > stejna privilegia (napr. dva ucetni v podniku - jeden meni treba cenu
> > faktury a druhy meni datum splatnosti). Krome TClientDataSet z MIDASu
> > nevim o zadnem rozumnem reseni primo v Delphi.
>
> No tak to je jednoduche, ne? Sice neni normalni, aby se tohle delo,
> ale da se to snadno udelat:
>
> UPDATE FAKTURA SET SPLATNOST = ... WHERE CISLO = ...; COMMIT;
>
> UPDATE FAKTURA SET CENA = ... WHERE CISLO = ...; COMMIT;
>
> Takovato zmena dopadne vzdy dobre, at uz se provedou transakce
> v jakemkoliv poradi. Nebo ne?

Jiste. Jak to udelat v Delphi? Teda krome toho, ze budu vsechny SQL dotazy
generovat rucne? Tady mi chybi trosku lepsi podpora ze strany komponent.

> Samozrejme, pokud tam suse posles
> cely radek, tak to dopadne dost blbe, kdyz sis ho nacetl pred
> 10 minutam a nekdo ho treba zmenil nebo vymazal...

Jo a co kdyz budou menit dva ucetni datum splatnosti najednou????

> Dalsi vec je,
> ze jeste navic na serveru mohou byt ulozeny ruzne kontroly na
> splatnost (ze treba nesmi byt mensi nez datum vystaveni apod.)
> a zrovna tak treba cena muze byt vypocitana na serveru z cen
> bez DPH, DPH apod.

Jo o tom uz jsem taky neco zaslechl ;-)))

Ahoj

Mac

P.S. Zacinam mit pocit, ze do te konference pisu pulku sam, asi toho necham, nez
me ukamenujete. Kdybych misto toho radeji smolil disertacku ;-)
--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

elementarny problem s C/S

[*] Jan �ebel�k <honza(zv)haes(tec)cz> - 10.3.1999 19:45:00

> Odes�latel: Martin Kubecka <martin.kubecka(zv)amenit(tec)cz>
>
> Nejak jsem prehledl reseni problemu: jeden zaznam smi editovat v jednom
> okamziku jen jeden uzivatel. Krome toho, ze to nemam chtit, ze mam
> prekopat databazovou strukturu popr. prejit na Paradox jsem se nic
> noveho nedozvedel :-(. A na nic jineho jsem se v podstate neptal. Asi mi
> holt nekdo maze maily :-)))

Tak jo.
Ja budu ve sve odpovedi presny: NEMAS TO CHTIT.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes(tec)cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 931
=========================================

elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 19:49:57

Petr Zahradnik wrote:

> Tak to je pak uloha spise pro Microsoft Word a ne pro SQL Server...

To mas pravdu. Nic jineho to v podstate ani byt nema ;-)

> posles disketu kolegovi a on to zedituje :-))) Ne, vazne, tohle
> neni rozhodne obvykle...

A o cem tu celou dobu melu ;-)

> Pak proc sit a SQL Servery? Proc ne potrubni posta? A naval disketu...

Protoze krome jedne jedine tabulky (resp. jednomu sloupci v tabulce - zbytek lze
editovat i kdyz nekdo pise zpravu), je to docela rozsahla databaze. A proc SQL?
Protoze umi napr. automaticky zalohovat, neslozi se kdy vylitne proud, ...
ostatne nejsi v tomto asi neznaly, tak proc ti to vysvetluju ;-)

> Takze psycholog ma pristup na zamky a muze suse zamek zrusit?
> No jo, tak to je ale system na dve veci, to se na me nezlob.
> Chudak pedagog, ktery mezi temi romanky ve sve kancelari napsal
> 10 strankovou zpravu v dobre vire, ze je zamknuto, a ted o tech
> 10 stranek prijde, protoze psycholog dokaze zamek smazat...

No prave ze to idealni neni. Ja tam treba mam jeste zpetnou kontrolu na
existenci zamku, kdyz to bude pedagog po spasovani ukladat a podle toho muzu
reagovat.

> Udelej ty ochrany na serveru, at se o to stara server, co je
> klientovi do konzistence dat? Co Ti brani editovat ne po celych
> radcich, ale po jednotlivych sloupcich?

Pozor. Klientem mi konzistenci dat nemas sanci nabourat.> :-))) Martine, to je pravda, ze jsi nedostal zadne rozumne reseni
> "jeden zaznam smi v jeden okamzik editovat jeden uzivatel", ale
> dostal jsi X navodu, jak vyresit primarni problem, abys toto
> nepotreboval. Sestavim Ti takovy graf:
>
> PRIMARNI PROBLEM - RESENI PROBLEMU - REALIZACE RESENI
>
> Ty mas PRIMARNI PROBLEM a vymyslel sis RESENI PROBLEMU, ktere neni
> zrovna moc elegantni, takze mas ted SEKUNDARNI PROBLEM pri REALIZACI
> RESENI. Takze to vypada asi takto:
>
Ano neni moc elegantni, ale splnuje to, co mi nenabizi vrozene vlastnosti SQL
serveru. Uznavam, ze lze 99% problemu tohot druhu obejit jinak (resp. lepsim db
navrhem). Diky za grafy i za tvuj cas.

Ahoj

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

Sekundarni index

[*] Jan �ebel�k <honza(zv)haes(tec)cz> - 10.3.1999 20:00:47

Je na te tabulce primarni index?
Bez nej sekundarni neudelas.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes(tec)cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 931
=========================================
----------
Odes�latel: Milan Fiedler <milanf(zv)rts(tec)cz>
Komu: Konference <delphi-l(zv)fwd(tec)cz>
P�edm�t: Sekundarni index
Datum: 10. b�ezna 1999 12:22

Zkousel jsem vytvorit sekundarni index DBASE

table1.Exclusive := True;
Table1.Open;
Table1.AddIndex('indBBB', 'BBB', []);
Table1.Close;

funguje bez problemu, ale v paradoxu mi to nejde, co stim jeste udelat, nebo jak to udelat !
Pres SQL se to chova stejne.

Diky

Milan Fiedler


elementarny problem s C/S

[*] Martin Kubecka <martin.kubecka(zv)amenit(tec)cz> - 10.3.1999 20:07:08

Jan �ebel�k wrote:

> Nicmene i tady lze konflikty mezi uzivateli osetrit:
> Pouziji napr. ClientDataSet.
>
> Jednoduche, krasne, bezchybne (az na tu licenci na dbclient.dll).

Prave ta licence, ojojoj....

Mac

--
==============================================================
= Ing. Martin Kubecka - Amenit s.r.o. =
= Na Valech - budova Dytron, 741 01 Novy Jicin =
= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
==============================================================

Dynamicka pole

[*] Ing. Zdenek Sraier <sraierzd(zv)czn(tec)cz> - 10.3.1999 20:17:03

Prave ze jsem to neuvolnoval (napred), potom jsem zkousel prirazeni
pole:=nil, pak jsem zkousel setLength(pole,0), ale nic nepomahalo.
Pri volani form.close to zarvalo "Invalid pointer operation".
Po zmene typu pole to jiz nehlasi.

S pozdravem Zdenek

--------------------------------------- E-Mail -------------------------
| Zdenek Sraier | sraierzd(zv)czn(tec)cz (jednou denne) |
| o__o | zdenek.sraier(zv)sms.paegas(tec)cz (max 160 zn. kdykoliv) |
| ( o o) |--------------------- WWW --------------------------|
| (. .) | http://users(tec)czn(tec)cz/~sraierzd/ |
------------------------------------------------------------------------
| WWW Stranky Potapecske (SP) HTTP://www.byll(tec)cz/scuba/ |
------------------------------------------------------------------------

----------
> Odes�latel: Ing. Jaroslav K�e�ek <grafex(zv)iol(tec)cz>
> V helpu se pise:
> Dynamic arrays are reference-counted and will automatically free themselves
> when there are no longer any references to them.
>
> 1. Podle me neni potreba dynamicka pole uvolnovat z pameti.
> 2. Jakym zpusobem jste ji uvolnoval? Me to napriklad FreeMem vyhazuje chybu
> vzdy. V prvnim pripade Access violation, v druhe Invalid Pointer Operation.
>
> Jaroslav Krecek
> -----P�vodn� zpr�va-----
> Od: Ing. Zdenek Sraier <sraierzd(zv)czn(tec)cz>
> >chtel bych se zeptat, jestli a jake mate zkusenosti s dynamickymi poli.
> >Specielne s dvojrozmernymi - jsem dnes narazil na problem s polem:
> >
> >|var
> >| b: array of array of integer;
> >|*****
> >|setLength(b,delka,2);
> >
> >Byla to lokalni promnenna formulare a pri jejim uvolnovani pri close
> >jsem porad dostaval "Invalid pointer operation".
> >
> >Kdyz jsem pole nahradil definici:
> >
> >|var
> >| b: array of array [1..2] of integer;
> >|*****
> >|setLength(b,delka);
> >
> >fungovalo to dobre (D4P-SP3).
> >
> >S pozdravem Zdenek

MAC vs everyone ;-) (was elementarny problem s C/S

[*] Petr Zahradnik <clexpert(zv)clexpert(tec)cz> - 10.3.1999 21:30:32

Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:

> > No to je prave tragedie. Tim jsi degradoval Client/Server databazi
> > na ciste souborovou.
>
> Kdyz to pouziju v databazi o 80 tabulkach pro jeden sloupec dvou tabulek
> tak mi to jako nejaka velka degradace nepripada (ale je to vec nazoru).

Ano, je to otazka nazoru.

> > Ano, tam se museji resit ruzne priznaky,
> > pecete a podobne silenosti. Jenze od toho si kupujeme SQL Servery,
> > abychom (a) zajistili integritu dat, (b) prenesly zpracovani na
> > server, (c) mohli jednoduseji programovat.
> >
> > (a) Integrita dat neznamena jen, ze kdyz chcipne pocitac, kde je
> > umisten databazovy soubor, databaze nechcipne, ale pojede dal.
>
> ?? To snad s tim so pouzivam vubec nesouvisi. Integrita je zachovana 100%

Ve Tvem pripade neni zachovana integrita dat. Pokud klient nastavi
priznak zamku a chcipne, tak mas v databazi binec, protoze mas
zamceny zaznam a pritom tam nikdo neni a neni tedy duvod to
zamykat. Jak to pak odemknes? Samo se to tezko odemkne, takze
musi nekdo prijit a rucne to odemknout. Nebo ne?

> > (b) To znamena nejen to, ze se o databazovy soubor stara SQL Server, ale
> > take to, ze klient primo nepristupuje na data. Tedy dava jen dotazy a
> > prikazy. Klient prenese vetsinu prace na server, maka server a maka
> > dobre. Pokud je potreba neco udelat, klient to nedela, jen da pokyn,
> > postara se o to server.
>
> Presne toto je splneno.

No to prave neni splneno. A neni a neni. Protoze delas rucne takovy
zasah, ktery jako klient nemas vubec delat. Nastavit priznak zamknuti
primo z klienta, kdy vubec neni zaruceno, ze se nekdy odemkne,
to je fakt drsny zasah do SQL databaze, ktery je v rozporu
s timto pravidlem... No rekni mi, kdyz tedy ten pedagog zacne
editovat zaznam, tedy nahodi si zamek, skoci si na pivko, prijde
uklizecka a pocitac mu vypne, kdo ten zamek shodi? Do toho
zaznamu se uz nikdo nikdy nedostane bez toho, aby ho nekdo jiny
shodil. Leda bys to udelal tak, ze se do nej dostane zase jen
ten stejny pedagog, az prijde po tydnu do prace, pac skoncil
v nemocnici, protoze se opil a spadl pod auto...

> > Takze zadne priznaky,
> > protoze databaze na serveru musi byt v dokonalem poradku i v pripade, ze
> > klient (1) chcipl, (2) obsluha klienta sla na obed nebo do trafiky, (3)
> > s databazi pracuje jiny software, nez jsi udelal Ty, (4) na databazi se
> > napojuje trouba s ISQL programkem a nevi, co tam ma delat...
>
> Bod 1 a 2 je kolizni, to je pravda a neni to prave to co me dvakrat tesi.
> Ovsem data jsou naprosto v poradku a je to korektni pro 3 a 4.

Kdepak, vubec nic neni v poradku. Protoze kdyz nejake operace
dela sam server, tak se nemuze stat, ze se neco udela spatne,
protoze server nemuze jit na pivo. Takze v pripade (1) je to
tragedie, zaznam uz nikdo neodemkne, v pripade (2) je to take
blbe, protoze je tam lidsky faktor, v pripade (3) tam ten
programator muze udelat totez, co v pripade (4), treba ze ho
nenapadne udelat nic jineho, nez nastavit priznaky zamku na
libovolny pocet zaznamu - jen tak, zkusi, co to dela...

> > (c) Misto sloziteho kusu programu, ktery obnasi 250 radku kodu,
> > pouzijes jednodussi SQL dotaz/prikaz/vlozenou proceduru, a o toto
> > se postara server. O databazi se ma starat server, ne klient.
>
> Nevim o jine moznosti pristupovat na SQL server nez pomoci SQL prikazu.
> Pouze u jedne tabulku spoustim po standardnich operacich INSERT, UPDATE,
> DELETE jeste nejakou tu ulozenou proceduru (v transakci), ktera zajistuje
> ony priznaky ve specialni tabulce s priznaky. Teoreticky je mozne to
> strcit do triggeru, ale prakticky je to neprakticke (identity a spol.).

Ne, ja nemyslim fyzicky jako jak to tam zmenit. Ja myslim takove
zmeny, ktere nejsou jednoznacne, prip. neni zajistena 100% funkce.
Rozumej - pokud navrhnes databazi tak, jak to ma byt, libovolny
SQL prikaz nemuze poskodit integritu dat, protoze se o to stara
server. Pokud navrhnes databazi spatne, ve Tvem pripade tam das
priznak zamku, pak take SQL prikazem muzes databazi uskodit - zamknes
a uz neodemknes... Tim myslim prave to, ze delas zmeny klientem
na takove urovni, ze tim muzes leccos pokazit.

> > No to je prave ono! Ja bych to specifikoval jinak - misto abys
> > uznal, ze database design je uplne spatny,
>
> Tak tedy uznavam...;-)

OK, takze to zmenis?

> > a zacal databazi
> > predelavat, radeji se zabyvas necim, co je problemem. Hodne lidi
> > Ti tu rika, ze ten navrh je spatny a navrli jsme Ti reseni
> > v jinem postaveni databaze. Ale Ty trvas na svem a hledas reseni
> > tam, kde to bude znamenat zpomaleni databaze a nespolehlivost.
>
> Furt lepsi 'zaseknuty' zaznam (nemoznost editace jednoho sloupce) nez Lost
> Update. (v pripade blokovani 1.000 uzivatelu je to mozna zase naopak). Zde
> se jedna o maximalne 10 uzivatelu.

Jaky lost update? K tomu nemusi vubec dojit! Mas jedno pole, kam
davas tu zpravu. Takze kdyz udelas tabulku poli, kdy kazdy clovek
ma sve pole, nikdy se nemuze stat, ze ti nekdo napise do ciziho
pole a tedy nemusis nic zamykat a nikdy nebude lost update:

TABULKA ZPRAV:
* ZAZNAM - to je klic zaznamu do prvni tabulky
* UZIVATEL - to je klic uzivatele (pedagog, psycholog...)
ZPRAVA - to je obsah zpravy

Takze prijde pedagog, napise zpravu off-line, vubec neni napojeny
na databazi, resp. nema zadne zamky. Jakmile tukne na cudlik
ulozit, udela se toto:

INSERT INTO TABULKA_ZPRAV VALUES(125515, 'pedagog', 'jdfhjsghsgjs');
COMMIT;

Kdyz to chce opravit, tak se to SELECTem vytahne zase do
programu a pri ulozeni se to tam UPDATem vrati. Kazdy clovek
ma svuj zaznam v tabulce zprav a jen ten muze menit. To muze
byt osetreno samozrejme treba vlozenou procedurou apod.
Divat se samozrejme mohou vsichni. Neni zde zadny problem, ale
vubec zadny, proste to je plne funkcni a pouzitelne. Velmi
jednoduse to spojis do nejake jedne zpravy pro tisk apod.

> > Pritom mala zmena SQL databaze by ve Tvem pripade znamenala zcela
> > jednoznacne mnoho prinosu - vyloucil bys zamky, ziskal rychlost
> > serveru, zajistil konzistenci dat apod.
>
> ??? Tak konzistenci mam zajistenou dobre, jedna ulozena procedura navic
> zase tak velke zpomaleni neprinese (je to nemeritelny rozdil) a vyloucil
> bych zamky (priznaky, at se to neplete s DB zamky) o ktere jsem usiloval
> ;-)

Klientem nastaveny priznak zamku = spatna konzistence dat.

> > A to si prosim uvedom, ze resis problem, ktery je spise urcen pro
> > souborove databaze.
>
> Takze to mam predelat na Paradox? :-)))

:-))) Klidne muzes, protoze neni zadny duvod pouzivat nepomerne drazsi
SQL Server.

> > Uz na prvni pohled je videt, ze to neni moc
> > koser. Vem Paradox, zamkni radek a edituj si. V pohode, na to
> > vubec nepotrebujes SQL Server. A ani na to neni vhodny SQL Server.
>
> Rozhodne je vhodnejsi nez souborova databaze :-)

Rozhodne neni vhodnejsi, protoze stoji penize a je to delo na vrabce.
Zakaznikovi usetris desitky tisic korun.

> > Jednou, az treba budes delat database design
>
> Jestli se k tomu ovsem nekdy dostanu...

:-)))

> > (to neni jen pridani
> > daneho poctu sloupcu do tabulek) SQL databaze, ktera se ma plne
> > replikovat z hlavni databaze bezici na serveru treba na 5 notebooku,
> > ktere si majitele odnaseji domu nebo na sluzebni cesty, aby na nich
> > porizovali data, ale vzapeti se pripojili a data aktualizovali, pak si
> > na me vzpomenes. To budes takovy problem resit do nekonecna, protoze
> > replikovanou databazi nezamknes ani omylem.
>
> Kdyz se ti to pripojuje aspon obcas na server tak je to jeste sranda.
> Horsi kdyz mas dve site (oddelene) a databaze se jednou denne
> synchronizuji pomoci e-mailu a rozesilaji se jen zmenene udaje. Pak to
> teprve nabira ty spravne grady ;-)

Kdyz dobre navrhnes databazi, tak vubec nezalezi na tom, zda se
pocitace replikuji kazdou hodinu, den nebo mesic. Jednoduse to
bude fungovat. Samozrejme, i v pripade replikaci nastavaji
konflikty, to je logicke, ale spravnym navrhem databaze jich
muzes hodne eliminovat.

> > Vzdyt jsi v jedne z minulych zprav psal, ze SQL Server pouzivas
> > jako skladiste dat, tedy nevyuzivas vubec vymozenosti SQL Serveru.
>
> Ja nerikal, ze nevyuzivam jeho vymozenosti. Jen moc nepouzivam triggery
> ;-)

Psal jsi, ze to vyuzivas jako skladiste dat...

> > Tak proc ted mluvis o aplikacnim serveru, trivrstve architekture?
> > Kdyz nepouzivas poradne ani dvojvrstvou... Aplikacni server dela
> > neco uplne jineho. Aplikacni server take nema co hrabat primo
> > do dat. Sprava dat SQL Serveru ma vzdy byt prave na SQL Serveru.
>
> Co furt myslis tim 'nema hrabat primo do dat'. To nejak jde???? Mimo SQL
> dotazy?

Tim "hrabat se primo v datech" myslim to, ze tam udelas nejakou
zmenu klientem, ktera je problemova. To je ten priznak zamku.
Samozrejme, ze to udelas pres SQL, jinak to nejde, ale je to
hrabani natvrdo. Pokud zmenis prodejni cenu vsech cernych holinek
na 145,- Kc, tak je to z klienta spravny SQL prikaz. Pokud ale
resis integritu dat na urovni klienta (nastavis nejaky docasny
priznak, kdy nemas zadnou jistotu, ze ho zase vratis), tak je
to hrabani se do databaze a neni to spravne.

> Jinak o trivrstve mluvim proto, ze by tento problem sel resit efektivne
> pomoci aplikacniho serveru.

A ja rikam jedno - proc proboha tak trivialni zalezitost, ktera
by sla elegantne resit na 2-urovnove architekture v SQL Serveru,
chces resit aplikacnim serverem, tedy resenim v cene treba
+300 tisic?

> > Kdepak, ale spravne navrzena SQL databaze, to je zaklad uspechu.
> > Pokud tam udelas chybu, da Ti dost zabrat naprogramovat zbytek...
> > Za dob souborovych databazi jsi jednoduse vytvoril tabulku
> > a bylo hotovo
>
> ??? no nevim, mozna na Paradoxu nebo DBase. Ja zacinal pred par lety s
> Accessem a ten ma spis blize k SQL serveru nez k souborove databazi a
> nerekl bych, ze by stacilo namlatit tabulky.

A co tedy do Accessu jeste mlatis nez tabulky?

> > , ale na SQL se musi i trochu myslet, kdyz to ma
> > za neco stat. Takze kdo spravne navrhne databazi, nema potom
> > moc starosti s takovymi problemy.
>
> Zkusim nekde sehnat mozek ;-)

Zkus zapojit svuj vlastni, vsak ono to pujde :-)

> Takze bud to ten druhy tomu prvnimu prepise (lost update) a nebo mu to
> vynada ze uz to nekdo zmenil, zrusi se mu zaznam a musi to psat znova? Tak
> si to myslel? Tomu ja nerikam user friendly. A muj nazor je, ze software
> ma byt pro lidi. A ne o limitech nejakych technologii.

Kdyz to udelas podle vyse uvedeneho, tak nic nehrozi.

> > No tak to je jednoduche, ne? Sice neni normalni, aby se tohle delo, ale
> > da se to snadno udelat:
> >
> > UPDATE FAKTURA SET SPLATNOST = ... WHERE CISLO = ...; COMMIT;
> >
> > UPDATE FAKTURA SET CENA = ... WHERE CISLO = ...; COMMIT;
> >
> > Takovato zmena dopadne vzdy dobre, at uz se provedou transakce
> > v jakemkoliv poradi. Nebo ne?
>
> Jiste. Jak to udelat v Delphi? Teda krome toho, ze budu vsechny SQL dotazy
> generovat rucne? Tady mi chybi trosku lepsi podpora ze strany komponent.

No tak to udelas rucne, to neni zadna tragedie. Ja nevim, jak delas
programy Ty, ale ja vetsinou nenechavam zakaznika se primo rochnit
v tabulce (mysleno v DBGrid). Delam formulare apod. Takze uz neni
zase takovy problem zjistit, co se v tom formulari zmenilo, a pak
podle toho udelat SQL prikaz, ktery zmeni fakt jen to, kde doslo
ke zmene. Tohle reseni je trosku pracnejsi pro programatora, kdyz
nenechas uzivatele editovat Grid, ale (a) je komfortni a (b) je to
idealni pro nasazeni replikaci. Mimochodem, cim mene dat (zmen)
budes do SQL Serveru posilat, tim rychleji to bude pracovat a tim
kratsi bude transakcni log. Tim padem se take rychleji prenesou
replikacni data pres e-mail boxy apod.

> > Samozrejme, pokud tam suse posles
> > cely radek, tak to dopadne dost blbe, kdyz sis ho nacetl pred
> > 10 minutam a nekdo ho treba zmenil nebo vymazal...
>
> Jo a co kdyz budou menit dva ucetni datum splatnosti najednou????

Tak za prve - ucetni nemaji co menit datum splatnosti na ruzne
hodnoty, protoze faktura ma jen jedno jedine datum splatnosti
a to je na ni napsane. Za druhe - no jeden vyhraje. Pokud se na
SQL server poslou dva prikazy UPDATE FAKTURA SET SPLATNOST =...,
tak nutne jeden prikaz bude provedeny prvni a druhy bude
provedeny druhy. Takze ten pozdejsi prepise ten prvni. Jenze
to je naprosto v poradku, tomu neni co vytknout. Jak by sis to
jako predstavoval?

> P.S. Zacinam mit pocit, ze do te konference pisu pulku sam, asi toho
> necham, nez me ukamenujete. Kdybych misto toho radeji smolil disertacku
> ;-)

Ale tady Te nikdo nekamenuje, tady probiha diskuse.


S pozdravem
Petr Zahradnik, pocitacovy expert

Autorizovany dealer TurboPower Software... knihovny pro Delphi
==============================================================
=== Petr Zahradnik - Computer Laboratory ===
=== Obvodova 740/14, PO BOX 15, 400 07 Usti nad Labem 7 ===
=== telefon: 047-5500610, telefon/fax: 047-5501627 ===
=== mobilni telefon GSM (hotline): 0602-409601 ===
=== http://www.clexpert(tec)cz/ clexpert(zv)clexpert(tec)cz ===
==============================================================
ICQ: 21215917, PGP vitano


Restartovat v rezimu MSDOS

[*] Petr Vones <pvones(zv)mbox.vol(tec)cz> - 10.3.1999 21:43:44

Daniel Jirasek wrote:
>
> To asi neni presne to co jsem potreboval. Ja potrebuji zavolat takovou funkci, ktera provede
> presne to co delaji Windows pri vyberu polozky "Vypnout - Restartovat v rezimu MSDOS" z
> menu "START". U API fce ExitWindowsEx nic takoveho neni a ja to nutne potrebuji.
>
> >Nevite nekdo, jak provede prikaz "Restartovat v rezimu MSDOS". Prohledal
> jsem cele API, ale
> >nemuzu nic najit.

Ahoj,

Dival jsem se a pomoci ExitWindowsEx to asi opravdu udelat nelze. Kdyz se podivas
do \Windows adresare tak tam (v ceskych Windows) najdes soubor "Spustit DOS.pif",
coz je vlastne zastupce na command.com s nastavenim - Rezim MS-DOS. Staci jej
spustit a chova se to tak jak potrebujes. Ale ten zpusob se mi vubec nelibi,
protoze je zavisly na lokalizaci Windows. Zkousel jsem ten soubor smazat a potom
dat Start -> Vypnout -> Restartovat v rezimu MS DOS a on se tim znovu vytvori.
Takze na to patrne existuje nejaka funkce, lec nenasel jsem ji :-)

--

Internet proti monopolu. Petr Vones, amatersky programator
* http://www.bojkot(tec)cz *
************************

Chyba pri zavreni Find dialogu - upresneni

[*] Petr Vones <pvones(zv)mbox.vol(tec)cz> - 10.3.1999 21:43:39

"Fryz, Zdenek" wrote:

Ahoj,

> dialog pouzivam pro hledani ve StringGrid - mrizka obsahuje seznam PSC,
> ktery je nacten pri startu aplikace
> z textoveho souboru :
>
> assignfile(f,'psc.txt');
> reset(f);
> while not eof(f) do
> begin
> readln(f,sRow);
> .
> .
> .
> closefile(f);

Mozna by bylo jednodussi nacist ten textovy soubor pomoci metody LoadFromFile
vlastnosti Rows ci Cols.

> > >ve sve aplikaci pouzivam TFindDialog - pri zavreni tohoto dialogu at uz
> > >tlacitkem 'Storno', nebo 'Close' v titulku okna
> > >se objevi hlaska 'Access violation at address 0042E389 in module ...' .
> > >Pouzivam D3.

Zkus tedy najit misto v programu ktere odpovida te adrese kde je chyba, spust
ji z IDE a pak hledej pomoci Search|Find Error, musis pred ni napsat $ coz
udava ze se jedna o hex format.

--

Internet proti monopolu. Petr Vones, amatersky programator
* http://www.bojkot(tec)cz *
************************

MAC vs everyone ;-) (was elementarny problem s C/S

[*] Mirun <forcom(zv)telecom(tec)cz> - 10.3.1999 21:50:21

>
>Jo a co kdyz budou menit dva ucetni datum splatnosti najednou????
>
^^^^ Prave kvuli necemu podobnemu jsem se na zacatku ptal na prakticky
duvod, proc pouzivat zamky. Vetsina duvodu mi totiz pripada podobne
vykonstruovana jako tento.

Ve firme pracuje 10 skladniku, kteri vystavuji dodaci listy, ze kterych se
pak dela celkovy prehled vydaneho zbozi za dane obdobi.
Nojo !, jenze co kdyz vsech 10 skladniku zacne psat najednou dodaci list
stejnemu zakaznikovi ?
Dojde ke katastrofe !!! najednou je tu 10 dodacich listu, kazdy ma jine
cislo a pri uzaverce zjistim, ze jsem vydal 10x vice zbozi nez ve
skutecnosti !!??
Co s tim ?
No, jasne, udelam to tak, ze dotycnemu zakaznikovi muze napsat dodak jen ten
skladnik, ktery dobehne k pocitaci jako prvni, a tem ostatnim se napise
"sorry, zakaznik se jiz zpracovava", a oni budou muset pockat az prijde
priste, a trenovat se v behu. Jenze jak to udelam ?
Asi budu muset vzdy pred Insertem s danym zakaznikem projet zaznamy za
aktualni den, a zjistit, zda uz nema vystaveny dodak. Kdyz ano, odmitnu
vystavit dalsi. A je to!
Jenze, obcas se muze stat ze zakaznik prijde 2x denne. A je to v pr****.
Takze to udelam tak, ze kazdy skladnik vypise cely dodak, vytvorim funkci
ktera najde, zda se zakaznikovi ten den jiz dodak vydal. Pokud ano, funkce
bude kontrolovat, zda jsou polozky v dodaku naprosto stejne. Pokud ano, je
jasne, ze nekdo napsal dodak znovu. Jenze napsat takovou funkci bude
slozite, protoze nevim, jestli vsichni psali radky ve stejnem poradi. Funkce
tedy bude muset vypocitat vsechny mozne kombinace polozek, a zjistit zda se
neshoduji. Jenze kdyz si zakaznik prijde 2x denne pro stejne zbozi, ve
stejnem mnozstvi, tak zase dojde k pruseru. Takze bude lepsi, kdyz ve
chvili, kdy mam podezreni, ze se jedna o stejny dodak, napisu hlasku "mam
podezreni, ze vydavate stejny dodak, jako vas kolega. Bezte se ho prosim
zeptat, a potvrdte ulozeni stiskem OK"

Myslim si, ze tohle je dost nazorny priklad toho, jak programator muze
stravit nekolik let zoufalym resenim hypotetickeho problemu, ktery zajedno
ani obecne reseni nema, navic k nemu s prihlednutim k fyzikalnim zakonum asi
ani nedojde.
Prvotni problem totiz neni v databazi, ale v organizaci prace dane firmy.
Presto kdyz se na dany priklad podivate,je urcita pravdepodobnost toho, ze k
tomuto problemu dojde. Ale ma smysl ho resit ?

Mirun

Sekundarni index

[*] Petr Vones <pvones(zv)mbox.vol(tec)cz> - 10.3.1999 21:59:12

> Milan Fiedler wrote:
>
> Zkousel jsem vytvorit sekundarni index DBASE
>
> table1.Exclusive := True;
> Table1.Open;
> Table1.AddIndex('indBBB', 'BBB', []);
> Table1.Close;
> funguje bez problemu, ale v paradoxu mi to nejde, co stim jeste udelat, nebo jak to udelat

Ahoj,

Pokud vytvaris v Paradoxu index na jedno pole, tak musi mit stejny nazev jako
to pole:

Table1.AddIndex('CITY', 'City', []);

--

Internet proti monopolu. Petr Vones, amatersky programator
* http://www.bojkot(tec)cz *
************************

Kl�vesa F1

[*] Petr Vones <pvones(zv)mbox.vol(tec)cz> - 10.3.1999 22:02:53

"SPELZA s.r.o." wrote:
>
> Je�t� jeden probl�m m�m u aplikace pro D4. Nefunguje mi F1 pro vyvol�n�
> helpu u hlavn�ho formul��e. Nev�te jak na to?

Ahoj,

Musis zadat nazev help souboru do Application.Help a u vizulnich komponent
pak zadat cislo helpcontextu do vlastnosti HelpContext, pricemz pokud je
nula, tak se pouzije hodnota parenta.

--

Internet proti monopolu. Petr Vones, amatersky programator
* http://www.bojkot(tec)cz *
************************

Dynamicka pole

[*] Petr Vones <pvones(zv)mbox.vol(tec)cz> - 10.3.1999 22:03:49

Ing. Jaroslav K�e�ek wrote:
>
> V helpu se pise:
> Dynamic arrays are reference-counted and will automatically free themselves
> when there are no longer any references to them.
>
> 1. Podle me neni potreba dynamicka pole uvolnovat z pameti.

Ahoj,

Neni, podobne jako lokalni promenne. Navic se u nich pouziva reference counting
podobne jako u Stringu.

> 2. Jakym zpusobem jste ji uvolnoval? Me to napriklad FreeMem vyhazuje chybu
> vzdy. V prvnim pripade Access violation, v druhe Invalid Pointer Operation.

Pokud jej chces explicitne uvolnit, tak do neho priradis nil.

> >chtel bych se zeptat, jestli a jake mate zkusenosti s dynamickymi poli.
> >Specielne s dvojrozmernymi - jsem dnes narazil na problem s polem:
> >
> >|var
> >| b: array of array of integer;
> >|*****
> >|setLength(b,delka,2);
> >
> >Byla to lokalni promnenna formulare a pri jejim uvolnovani pri close
> >jsem porad dostaval "Invalid pointer operation".
> >
> >Kdyz jsem pole nahradil definici:
> >
> >|var
> >| b: array of array [1..2] of integer;
> >|*****
> >|setLength(b,delka);
> >
> >fungovalo to dobre (D4P-SP3).

Ahoj,

a neni to tim, ze dynamicke pole se indexuji VZDY od 0, takze pole o velikosti
2 muzes indexovat jen jako (0..1) narozdil od te druhe definice kde pouzivas
indexovani (1..2). Pri behu aplikace se rozsah pole samozrejme nekontroluje
(pokud nemas v Options - Compiler zaple Range Checking. Ale POZOR, lze to
pouzivat jen pri ladeni, protoze to znacne zpomaluje vysledny kod !), takze
ti to potom muze vykazovat pri chybnem zadani indexu pole tuto chybu.

--

Internet proti monopolu. Petr Vones, amatersky programator
* http://www.bojkot(tec)cz *
************************

elementarny problem s C/S

[*] eL <delphi(zv)sales(tec)cz> - 10.3.1999 22:14:59


-----P�vodn� zpr�va-----
Od: Martin Kubecka <martin.kubecka(zv)amenit(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 16:37
P�edm�t: Re: elementarny problem s C/S


>Petr Zahradnik wrote:
>
>> Puvodni zprava, kterou napsal Martin Kubecka dne 10 Mar 99,:
>>
>> > Ta zprava spise vypada takto:
>> >
>> > 5.5.1999
>> > Pedagog - blablabla
>> >
>> > Psycholog - blablabla
>> >
>> > Specialni pedagog - blablabla
>>
>> Pokud je tohle v jednom jedinem memo poli, tak je to ale
>> podle me spatne navrzena databaze.
>
>Vidis to a podle me ne ;-). Ona to totiz muze byt taky zprava typu:
>
>5.5.99 -
>
>blablabla Pepa
>
>Proste v realu je to jeden papir, ktery si lidi predavaji mezi sebou a
dopisuji
>tam sve zavery. Jiste, muzu to rozdelit do dalsi tabulky zprav 1:N, ale
PROC
>bych to delal? Maximalne, abych cely proces uzivatelum zneprehlednil.
>
>> > Kazdy pripise sve stanovisko, pricemz vychazi z textu napsaneho
predchozim
>> > odbornikem (a taky jej obcas treba i meni).Tzn. asi by nebylo zrovna
>>
>> Chces rici, ze psycholog neco napise a pedagog mu to suse
>> zmeni? A co ten na to rika?
>
>Co by rikal, nedozvi se to ;-). Ne, vazne, muze udelat nejake stylisticke
upravy
>apod. - je to spolecne dilo nekolika osob - neni to typicka lekarska
zprava,
>pozor na to.
>
>> > dvakrat idealni vychazet z predchoziho textu a po dopsani zjistit, ze
ten
>> > puvodni text je najednou jiny ne? Me toto pripada v tomto pripade
>> > vhodnejsi.
>>
>> Ale tomu stejne nezabranis v pripade, ze prvni si to zmeni
>> az pote, co tam druhy neco dopsal.
>
>Tomu zabranit nechci, naopak, pokud si to prvni bude chtit zmenit, tak mam
>jistotu, ze uvidi aktualni udaje a ne nejaka stara data.
>
>> Navic pri tomto reseni
>> muze psat tento text jen jeden clovek v jednom case, zatimco
>> v navrhovanem reseni jich muze psat 5 najednou.
>
>To je PRESNE to co chci. Tu zpravu nemuze patlat pet lidi najednou (oni
musi
>vychazet z vysledku ostatnich lidi - tzn. musi je videt pred sebou a to v
>aktualni podobe).
>
>Mac
>
>==============================================================
>= Ing. Martin Kubecka - Amenit s.r.o. =
>= Na Valech - budova Dytron, 741 01 Novy Jicin =
>= telefon/fax: +420 656 706203 mobil: +420 603 265926 =
>= http://www.amenit(tec)cz mailto:martin.kubecka(zv)amenit(tec)cz =
>= ICQ: 8906773 GSM (SMS): martin.kubecka(zv)sms.paegas(tec)cz =
>==============================================================
>

Dobry den.
Pardon, ze se pletu do debaty ve ktere stacim tak akorat sledovat logiku
toku dat. Technickym problemum C/S a velkych dbasi a trigeru atd. prilis
nerozumim a nikdy jsem s temito vecmi nepracoval.
Rad bych se vyjadril k tomu prikladu lekarske zpravy. Podle meho selskeho
rozumu nejde srovnat jedno velke memo pole s jednim papirem. Protoze na tom
skutecnem papiru , ktery koluje mezi oddelenimi lze napriklad jen tezko neco
vymazat aniz by to bylo patrne. Ovsem v memo poli, ktere bude pristupne vsem
je to velmi jednoduche. Takze nechat vsechny upravovat jeden text mi pripada
dost nebezpecne. V kazdem pripade bych tento pripad resil (navrhuji pouze
logicke reseni) tak aby byla zajistena nemennost udaju. Tedy aby kazdy mohl
jen pripisovat. Mozna namitnete, ze na papire se da skrtat. Mate pravdu,
ovsem je tam videt, ze bylo neco skrtano a pokud je nekde neco dopsano je to
zase znat ( z rukopisu nebo z rozhozeneho radkovani a typu nebo barvy
pisma - je-li psano na psacim stroji). Musite si uvedomit, ze i tohle
vsechno dela tu lekarskou zpravu tim cim je. A pokud si nekdo vezme do ruky
tu zpravu (tedy predpokladam , ze ucelem je nejake konecne komplexni
vyhodnoceni) jiste bude pro neho dulezite posoudit i tyto aspekty ( mam tim
na mysli, ze dejme tomu gynekolog pripsal neco k vyjadreni internisty). To
zrovna v pripade konecneho vyhodnoceni urcite muze sehrat svou roli. Takze
bych tento pripad urcite i za cenu urcite komplikace resil temi oddelenymi
zaznamy pro kazdeho specialistu. Konec koncu tam muze byt i moznost dodat i
vyjadreni k urcite zprave jineho oddeleni.(treba samostatna tabulka s
indexem na cloveka a oddeleni) A take bych nepodcenoval tu moznost, ze pri
editaci takovehle (pravdepodobne nekolikastrankove) zpravy nejaka "baba"
(uz tu v diskuzi byla) vyzene pri uklidu doktora ven na cigaro a polozenim
popelniku na klavesnici podrzi DELETE. I kdyz je to nepravdepodobne rozhodne
bych vysledky prace nekolika oddeleni nedaval takhle vsanc. No a pokud se
jedna o zamknuti zaznamu, mozna by tomu doktorovi stacila zprava typu (pokud
chce zacit psat neco pacientu Novakovi) "POZOR NOVAKOVI JE V SOUCASNE DOBE
EDITOVANA ZPRAVA CHIRURGIE A ......A OCNIHO. UDAJE KTERE VIDITE NA
OBRAZOVCE NEMUSEJI BYT AKTUALNI"


Jeste jednou zdravim
eL..

DBGrid: Zistenie hodnoty v policku pocas editacie

[*] Petr Vones <pvones(zv)mbox.vol(tec)cz> - 10.3.1999 22:18:56



Branislav Danko wrote:
>
> Nazdar,
> potreboval by som poradit s tymto problemom: Mam v tabulke 2 policka, ktore su navzajom zavisle prostrednictvom urciteho vzorca, t.j. POLICKO1 = POLICKO2 * KONSTANTA a naopak POLICKO2 = POLICKO1 / KONSTANTA. Je teda mozne zadat niektore z nich a to druhe sa automaticky dopocita (takto to bolo specifikovane). Ak prave editujem POLICKO1, tak do policka POLICKO2 ukladam vypocitanu hodnotu, ak POLICKO2 editujem vypocitavam POLICKO1. Chcel by som, aby sa vypocitavana hodnota zobrazovala v druhom policku priebezne. Avsak hodnota Value sa editovanom policku zaktualizuje az ked preskocim na ine policko, resp. zaznam, teda to druhe policko neviem dovtedy vypocitat. Nevie mi niekto poradit, ako mam z policka precitat prave editovany text.

Ahoj,

Slo by to napriklad takhle:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, Grids, DBGrids, DBTables, ExtCtrls, DBCtrls, StdCtrls, Mask;

const
UM_UPDATEVALUE = WM_USER + $100;

type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Table1POLICKO1: TFloatField; // nastavit v Object Inspectoru vlastnost Tag na 1
Table1POLICKO2: TFloatField; // nastavit v Object Inspectoru vlastnost Tag na 1
Table1TEXT: TStringField;
procedure Table1POLICKO1Change(Sender: TField);
procedure Table1POLICKO2Change(Sender: TField);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
private
class function CanUpdateValue(DBGrid: TDBGrid): Boolean;
procedure UMUpdateValue(var Msg: TMessage); message UM_UPDATEVALUE;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

const
Konstanta = 2;

procedure TForm1.Table1POLICKO1Change(Sender: TField);
var
SaveEvent: TFieldNotifyEvent;
begin
SaveEvent := Table1POLICKO2.OnChange;
try
Table1POLICKO2.OnChange := nil;
Table1POLICKO2.Value := Table1POLICKO1.Value / Konstanta;
finally
Table1POLICKO2.OnChange := SaveEvent;
end;
end;

procedure TForm1.Table1POLICKO2Change(Sender: TField);
var
SaveEvent: TFieldNotifyEvent;
begin
SaveEvent := Table1POLICKO1.OnChange;
try
Table1POLICKO1.OnChange := nil;
Table1POLICKO1.Value := Table1POLICKO2.Value * Konstanta;
finally
Table1POLICKO1.OnChange := SaveEvent;
end;
end;

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if CanUpdateValue(TDBGrid(Sender)) then
PostMessage(Handle, UM_UPDATEVALUE, 0, Integer(Sender));
end;

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if CanUpdateValue(TDBGrid(Sender)) then
PostMessage(Handle, UM_UPDATEVALUE, 0, Integer(Sender));
end;

type
TDBGridHack = class(TDBGrid);

class function TForm1.CanUpdateValue(DBGrid: TDBGrid): Boolean;
begin
with DBGrid do
Result := EditorMode and (SelectedField <> nil) and (SelectedField.Tag = 1);
end;

procedure TForm1.UMUpdateValue(var Msg: TMessage);
begin
with TDBGridHack(Msg.LParam) do
if (DataSource.DataSet.State in [dsEdit, dsInsert]) and
CanUpdateValue(TDBGrid(Msg.LParam)) then
SelectedField.AsString := InplaceEditor.Text;
end;

end.

--

Internet proti monopolu. Petr Vones, amatersky programator
* http://www.bojkot(tec)cz *
************************

Znakova stranka

[*] Petr Vones <pvones(zv)mbox.vol(tec)cz> - 10.3.1999 22:31:05

> Milan Fiedler wrote:
>
> Nez to zacnu delat rad bych slysel vase nazory,
>
> Mam delat prevod z jedne znakove stranky tabulky do jine.
> Co mi poradite.

Ahoj,

Pokud tim mas namysli to, ze prevadis data z jedna tabulky do druhe a
kazda z nich ma jinou kodovou stranku, tak muzes pouzit TBatchMove ktery
to cele zaridi. Pokud by jsi to chtel delat rucne, tak by to slo pomoci
prevodu obou kodovani na jedno spolecne, k tomu jsou urceny BDE API funkce
DbiAnsiToNative a DbiNativeToAnsi.

--

Internet proti monopolu. Petr Vones, amatersky programator
* http://www.bojkot(tec)cz *
************************

Databaze ...

[*] Jan �ebel�k <honza(zv)haes(tec)cz> - 10.3.1999 22:37:59

To je zase nejaka cunarna, ze jo!

Co takhle misto DBEdit1.Text := ...
napsat
Table1.FieldByName('...').asString:=...?
Nestacilo by to?

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes(tec)cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 931
=========================================
----------
> Odes�latel: Pavel Skalick� <P.Skalicky(zv)sh.cvut(tec)cz>
> Komu: Delphi forum <delphi-l(zv)fwd(tec)cz>
> P�edm�t: Databaze ...
> Datum: 10. b�ezna 1999 14:54
>
> Vsem preji prijemny den.
> Pokud nekdo z Vas delal s databazemi, pomozte mi prosim vyresit tento
> problem:
>
> mam DBEdit(ktery neni videt), do ktereho ukladam hodnoty stylem
> DBEdit1.Text := ...
> potrebuji, aby se mi zmena promitla do DBNavigatoru, aby se povolilo
> tlacitko Post a ja mohl zmenu ulozit. Nevite nekdo jak ?
> Dekuji vsem za odpovedi
> Pavel Skalicky (P.Skalicky(zv)sh.cvut(tec)cz)

elementarny problem s C/S

[*] Jan �ebel�k <honza(zv)haes(tec)cz> - 10.3.1999 22:38:40

> > Aplikace C/S jsou deformace trivrstve architektury tak,
> > ze aplikacni logika je rozdelena - cast do datove a cast do prezentacni.
> > Ty ji chces nacpat celou do klienta, ja myslim, ze by ji bylo lip na
> > serveru.

[Jan Sebelik]
Architektura C/S nemuze deformovat trivrstvou architekturu, protoze tady byla driv.
Teda pokud se nemylim.

> Nene, ja ji tam cpat nechci (rozhodne ne celou). Tady mas pravdu, ze idealni
> by byl ten 'mezikus' v ramci aplikacniho serveru. Otazka je, jak to bude
> vypadat v praxi (dema vypadaji vzdycky moc pekne ;).
>

[Jan Sebelik]
Ono to i v praxi fakt funguje, dokonce velmi pekne rychle. DOSovska rychlost.
Akorat ta licence na MIDAS (dbclient.dll) a dalsi licencni problemy (Oracle "multiplexor" nebo jak tomu rikaji).

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes(tec)cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 931
=========================================

Databaze ...

[*] eL <delphi(zv)sales(tec)cz> - 10.3.1999 22:48:31

[P��loha v souboru: Projekt.ZIP]
Mne to normalne funguje.
DBEdit.Visible:=false; - neni videt

....
Table1.Edit;
DBEdit.Text:='xxxxx'

No a v tu chvili je navigator "BeforePost" jak bych tak rekl a zmenu muzu
bud potvridit nebo poslat do kanalu.
V priloze je priklad.

Dofam ,ze jsem pomohl.

eL..

elementarny problem s C/S

[*] Jaro <jaro(zv)sinea(tec)cz> - 10.3.1999 22:58:06

>Mimochodem, pro ty, kteri to nevedi:
>InterBase 5 rozsirila moznosti deklarativni intergrity ve Foreign Key
(restrict/cascade/set null/set default)

Jenze kdyz tech deklaraci bylo vice, tak nam to na Interbazi delalo chyby.
Mam 5.0. Na 5.5 jsem to nezkousel. Ani nevim co je na tej 5.5 vlastne noveho

Jaro

Variantni pole

[*] Jan P�ni�ka PENDAsoft <PENDAsoft(zv)usa(tec)net> - 10.3.1999 22:59:08

Chybu to hlasit musi, protoze se jedna o chybny zapis. Pokud chcete pouzit
dvou rozmerne pole tak staci nasledujici:
A := VarArrayCreate([0,4, 0,4],varInteger);
A[0,0]:=1;
pokud chcete pouzivat sub pole, tak zapis bude vypadat takto:
A := VarArrayCreate([0,4],varVariat);
A[0] := VarArrayCreate([0,4],varInteger);
A[0][0] := 1;

-----Original Message-----
From: owner-delphi-l(zv)fwd(tec)cz [mailto:owner-delphi-l(zv)fwd(tec)cz] On Behalf Of Jiri
Vrabec Java -5 rocnok
Sent: Wednesday, March 10, 1999 4:24 PM
To: delphi-l(zv)fwd(tec)cz
Subject: Variantni pole

Potreboval bych pomoct : nevite nekdo jak zapisovat do variantnich poly ??
pr :

var A: variant;
begin

A := VarArrayCreate([0,4],varVariat);
A[0] := VarArrayCreate([0,4],varInteger);
A[0,0] := 1;
// a zde to da chybu
end;
Nevite jak tam zapsat ?? Do pole A[x] se da zapsat normalne, ale do dalsich
to jiz nejde ...

Dik.
Jirka.
---
JAN PENICKA student of Technical University of Liberec
Jan.Penicka(zv)usa.net
PENDAsoft(zv)usa.net

Tvorba napovedy

[*] Petr Medek <xmedekp(zv)sun.felk.cvut(tec)cz> - 10.3.1999 23:52:24

Pokud me pamet neklame, tak HCW spusti "prostredi" a HCRTF by mel byt
compiler spustitelny z radky. Nicmene ke spusteni HCRTF je potreba HCW takze
efekt jde trochu do ztracena.
Me osobne se ale nedari predat HCRTF parametr s help-project souborem (tusim
.hpj), takze mi stejne nabiha prostredi, kde to musim naklikat rucne.

Petr Medek

-----P�vodn� zpr�va-----
Od: Zbysek Hlinka <zhlinka(zv)login(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 16:12
P�edm�t: Re: Tvorba napovedy


Ondrej Krajicek wrote:

> Kdyz jsme tak u toho, jaky je rozdil mezi HCW a HCRTF ?
> ok

To jsem ani nezjistoval. :-)


S pozdravem

Zbysek Hlinka
E-mail: zhlinka(zv)login(tec)cz, localizator(zv)localizator.com
Tel.: 02/795 29 56; GSM: 0603 551 282
Krystofova 1016, 149 00 Praha 4
CZ


elementarny problem s C/S

[*] Jaro <jaro(zv)sinea(tec)cz> - 11.3.1999 00:26:33

> neslo. A vubec - myslim, ze trigger AFTER DELETE nema zadny vyznam - je
> potreba pouze BEFORE DELETE.
------------
Tak ja ti uvedu dalsi velmi jednoduchy a jiste potrebny priklad. Vedu si
napr. tabulku s historii zmen, kde si ukladam ktery uzivatel
provedl jakou zmenu (Insert, update delete) a v kterou dobu. Staci povesit
na AfterInsert, AfterUpdate a AfterDelete trigger s Insert do tabulky
History s aktualnim datumem a jmenem User. Pokud by to bylo na BeforeDelete,
BeforeInsert ..., tak to nebude fungovat
dobre. Udelam pokus o smazani a diky napr. nastavene integrite mi to spravne
oznami, ze nelze zaznam smazat. Ovsem to jiz probehl ten trigger na
BeforeDelete a zapsal mi do Histori, ze doslo ke smazani a ono pritom
nedoslo, ze?

Ttento priklad take rad uvadim, jako nadhernou ukazku vyuziti triggeru.
Abyste zajistili sledovani historie vsech dulezitych tabulek, nemusite na
klientovi napsat ani radek kodu. Vse chodi rychle a na serveru. Klient se
nicim
nezdrzuje a vubec se o to nestara.

"Jak se muze jeste dneska nekdo nervovat a potit s temi soubory???"
.... jo, jo...... vim, vim ..... zakaznici by nejradeji programy zadarmo
.....

Jaro

Polak Jiri wrote:

> triggeru je dostatecna. Zkusim se zamyslet nad situacemi, kdy
> je nutne rozlisovat before a after:
> 3) udrzovani ref. integrity
> - napr. kaskadovy delete: nechce se mi to hledat, ale pochybuji, ze by to

Jak udelas napriklad toto? Mas tabulku T1 svazanou referencni
integritou s T2. V T1 jsou rodice, v T2 deticky. Kdyz vymrou
deticky, je treba se zbavit jejich rodice. Nenapada me nic lepsiho,
nez povesit na After Delete dotaz, zda jeste existuje v tabulce
nejake detatko, a pokud ne, zrusim i prislusneho rodice.
Upozornuji, ze na Before Delete toto nelze.


S pozdravem

Zbysek Hlinka
E-mail: zhlinka(zv)login(tec)cz, localizator(zv)localizator.com
Tel.: 02/795 29 56; GSM: 0603 551 282
Krystofova 1016, 149 00 Praha 4
CZ

elementarny problem s C/S

[*] Jaro <jaro(zv)sinea(tec)cz> - 11.3.1999 01:07:57

> Zacinam mit pocit, ze misto abychom spolecne nasli nejake pripadne reseni
> jak v nekterych opravnenych pripadech zajistit praci jednoho uzivatele na
> jednom zaznamu v jednom casovem okamziku (a takove pripady v praxi
> existuji), tak se hledaji alternativy v navrhu databazi apod (tim ji
> nechci v zadnem pripade podcenovat). misto treba v nejake nove technologii
> nebo v nejakem peknem napadu.

O jake nove technologii mluvis? Ja myslel, ze chces pouzivat C/S
technologii. A prikladu, jak prave tohle zajistit tu bylo uvedeno cela rada
(pristupova prava, triggery, transakce, zmena logiky navrhu databaze -
rozpad tabulek, atd ) Technologie C/S predpoklada urcity jiny zpusob
mysleni, navrhu databaze i programovani. To je obsahem i cilem teto
technologie. Jestli chci tuto technologii vyuzivat, pak se ji musim
prizpusobit a ne se znazit technologii prizpusobovat svym predstavym,
protoze pak se mi muze stat, ze uz to nebude ta C/S technologie, ale neco
jineho. Videl jsem nektere programy, ktere pouzivaly drahy databazovy stroj,
ale do C/S mely moc daleko. V tom, zda jsou nebo nejsou pouzity triggery
to opravdu vetsinou neni.

>Misto "vymluv" bych uvital alespon jedno rozumne reseni ...

Tech rozumnych reseni tu padlo mnoho. Staci si je procist. Odpovedi je
tolik, ze by to vydalo na vlastni konferenci. Jenomze ty si nejak nemuzes
vybrat a ze sve analyzy a z datoveho navrhu neminis uhnout ani o centimer.
Bud se ti to zda slozite nepraktike, problematicke pro tisk a jeste jsi nic
z toho nevyzkousel.

Ja zase "zacinam mit pocit", jako bys chtel ponorku naucit letat nebo
naopak.
Ponorka nepotrebuje kridla, kdyz plave pod hledinou. Ona ma lodni sroub.
Interbaze nepotrebuje "vnejsi" zamky, kdyz je urcena pro C/S. Ona ma
transakce
trigerry, pristupova prava, atd.

elementarny problem s C/S

[*] Jaro <jaro(zv)sinea(tec)cz> - 11.3.1999 01:09:20

> Ale dostane. Rozhodne muze cist. No a protoze pri pokusu o editaci uvidi,
> KDO a KDY to zamknul, tak mu pujde vynadat. No a pokud by snad nahodou byl

Vporadku, ale pak tomu nerikejme C/S aplikace! Kdyz maji jedni behat za
druhyma atd, tak proc neusetrit za drahe servery, kabelaze ... proc to
nenosit
rovnou na disketach ... po staru?

Moje predstava C/S aplikace je, ze databaze bude "reagovat" na cinnost mnoha
"klientu" a ne jim branit v praci. Jinak bych tomu radeji C/S nerikal.
Jaro

elementarny problem s C/S

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 11.3.1999 07:08:55

> -----Original Message-----
> From: Zbysek Hlinka [mailto:zhlinka(zv)login(tec)cz]
> Sent: Wednesday, March 10, 1999 6:52 PM
> To: delphi-l(zv)fwd(tec)cz
> Subject: RE: elementarny problem s C/S
>
>
> Polak Jiri wrote:
>
> > triggeru je dostatecna. Zkusim se zamyslet nad situacemi, kdy
> > je nutne rozlisovat before a after:
> > 3) udrzovani ref. integrity
> > - napr. kaskadovy delete: nechce se mi to hledat, ale
> pochybuji, ze by to
> > neslo. A vubec - myslim, ze trigger AFTER DELETE nema zadny
> vyznam - je
> > potreba pouze BEFORE DELETE.
>
> Jak udelas napriklad toto? Mas tabulku T1 svazanou referencni
> integritou s T2. V T1 jsou rodice, v T2 deticky. Kdyz vymrou
> deticky, je treba se zbavit jejich rodice. Nenapada me nic lepsiho,
> nez povesit na After Delete dotaz, zda jeste existuje v tabulce
> nejake detatko, a pokud ne, zrusim i prislusneho rodice.
> Upozornuji, ze na Before Delete toto nelze.
>

Jo, takovy pripad me nenapadl. To je kaskadovy delete
v opacnem smeru a nikdy jsem se s takovou potrebou nesetkal.
Tady by AFTER byl pohodlnejsi, ale v BEFORE by to taky slo.
Misto exist pouziju if select count(*) <= 1 then delete z rodice.
Aspon doufam, ze se nikde nevola delete pro prikaz, ale
vzdy pro kazdy mazany zaznam.

Jiri Polak
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

Prace s databazi v siti

[*] Martin Lasevic <vyvoj(zv)atlascon(tec)cz> - 11.3.1999 07:13:34

>Jura Polak napsal :
>Nastavil jsem pro native driver paradoxu NET DIR
>do adresare, kde se nebudou uzivatele mlatit.
>Nejlepe na lokal, treba C:\.

Nechci polemizovat, ale u sitove prace nastavovat NET DIR na lokal je
ponekud hloupe. Vzdyt prave NET DIR ma slouzit k tomu, aby se dala
zajistit prace vsech uzivatelu na siti nad jednou tabulkou a aby se pres
soubory *.NET mohly ,laicky receno, domluvit i ostatni aplikace z jinych
stanic.

Z toho duvodu je dobre, aby NET DIR ukazoval na cestu, ktera je dostupna
vsem uzivatelum
na siti ( na nejaky spolecny PUBLIC adresar) a v nejhorsim pripade lze brat
v uvahu i to, ze NET DIR musi byt minimalne spolecny pro danou aplikaci.

Pokud tomu tak neni, pak vznikaji prave takove hlasky jako "Directory is
controled by other
.NET file" a jine jim podobne, jinak receno viceuzivatelsky pristup na
sitovou databazi ( desktopovou) jde do bazin.

Ty *.lck soubory vznikaji prave pri otevreni tabulky (DBF a DB) na sitovych
discich ( nebo i na lokale, pokud mam nastaveno v BDE LOCAL SHARE na True a
jejich obsah mi zajisti,
ze pri otevreni tabulky pri neexclusivnim pristupu ji muze otevrit i dalsi
uzivatel. Je dulezite, aby pristupova prava na adresar, kde jsou tabulky (
*.lck soubory se vytvari v tomtez adresari), mela plny pristup, tj. Read
Write Create Delete. Je zcela jasne, ze takhle treba
neotevres tabulku na CD-ROM, ktery je v siti vysdileny a je na jinem PC,
nez na kterem pracujes.

Z toho duvodu nejsou desktopove databaze dle meho nazoru moc vhodne pro
praci na siti.

Martin Lasevic

Preji hezky den .....
============================================
ML Software - Martin Lasevic
Budovatelska 459,
708 00 Ostrava - Poruba
tel.: + 420 (69) 691 85 11, 0603 338 765
E-mail : ml_software(zv)email(tec)cz
htt://www.mujweb(tec)cz/www/ml_software
============================================


-----Puvodni zprava-----
Od: Polak Jiri [SMTP:Jiri.Polak(zv)tconsult(tec)cz]
Odeslano: 10. boezna 1999 13:41
Komu: 'delphi-l(zv)fwd(tec)cz'
Poedmit: RE: Prace s databazi v siti

<<Soubor: ATT00000.txt; charset = windows-1250>>

Trideni DataSetu

[*] Martin Lasevic <vyvoj(zv)atlascon(tec)cz> - 11.3.1999 07:13:26

A co takhle to resit tak, ze mas Query a na DBGridu, ktery je poveseny na
DataSource s TQuery pres udalost OnDoubleClick sestavis znova to Query.
Podle DoubleClicku bys mel zrejme vedet i na jaky sloupec a tim pole Query
lze postavit Field do sekce ORDER BY.
Tomu se bez pouziti indexu zrejme asi nevyhnes.

No pak je tu jeste moznost, ze bude mit data zindexovana a budes se
prepinat mezi indexy. Tady je vsak podminka, ze pro pouziti sekundarniho
indexu jiz musi existovat primarni index. No pak uz neni problem napriklad
vytvaret i dodatkove indexy, tj. indexy ktere se tvori az za behu programu
a ktere nejsou tabulce znamy pri jejim vytvoreni.

Martin
Preji hezky den .....
============================================
ML Software - Martin Lasevic
Budovatelska 459,
708 00 Ostrava - Poruba
tel.: + 420 (69) 691 85 11, 0603 338 765
E-mail : ml_software(zv)email(tec)cz
htt://www.mujweb(tec)cz/www/ml_software
============================================
-----Puvodni zprava-----
Od: Polak Jiri [SMTP:Jiri.Polak(zv)tconsult(tec)cz]
Odeslano: 10. boezna 1999 10:33
Komu: delphi-l(zv)fwd(tec)cz
Poedmit: Trideni DataSetu


Vite nekdo neco o trideni datasetu?
Nemyslim ORDER BY v SELECTU, chtel bych
umoznit uzivateli, aby mohl podle ruznych sloupcu
tridit jiz nactena data. Existuje free potomek TQuery,
ktery by to umel?

Diky

Jiri Polak
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

elementarny problem s C/S

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 11.3.1999 07:16:43


> Samozrejme. Ovsem nepouzivam obvykle kaskadovy delete.
> Maloktery uzivatel
> si dokaze uvedomit, co zpusobi smazanim treba jedne firmy z
> adresare. Tam
> kde je to potreba samozrejme mohou nastoupit triggery.

V tomto konkretnim pripade bych vubec nepouzil delete.
Myslim, ze udaje z ciselniku a jinych tabulek, na nez existuji
reference, by se vubec nemely mazat. Tim si clovek koleduje,
aby se stala nenapravitelna chyba, v lepsim pripade neprijemnosti.
Preferuji pouzivani atributu platnost (boolean) nebo
dvojice atributu PlatnostOd, PlatnostDo (date nebo datetime)
nebo Status = ('Platny', 'Neplatny', 'Pozastaven', ....)
a misto vymazani pouzivat ukonceni platnosti.

Jura
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

elementarny problem s C/S

[*] Zbysek Hlinka <zhlinka(zv)login(tec)cz> - 11.3.1999 07:37:31

Martin Kubecka wrote:

> protoze to muze obcas zlobit (za rok a pul provozu se to teda jeste
> nestalo - takze bych to ze statistickeho hlediska mohl vyhlasit jako
> stabilni ;-). Takze co s tim? (proboha jen mi uz nepiste, jak mam prekopat
> datovou strukturu ;-)

Jestlize neco funguje, je nejvyssi cas to opravit, abys mel duvod
tahat ze zakaznika dalsi penize za upravy programu. :-)

Hi, Bille. :-)


S pozdravem

Zbysek Hlinka
E-mail: zhlinka(zv)login(tec)cz, localizator(zv)localizator.com
Tel.: 02/795 29 56; GSM: 0603 551 282
Krystofova 1016, 149 00 Praha 4
CZ


elementarny problem s C/S

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 11.3.1999 07:44:26


> [Jan Sebelik]
> Architektura C/S nemuze deformovat trivrstvou architekturu,
> protoze tady byla driv.
> Teda pokud se nemylim.

Nemylis se, ale nyni existuji ty architektury soucasne.
Proto je muzeme porovnavat a myslim, ze vystizny popis
architektury C/S je prave to, co jsem napsal.
Nebo co jineho ziskas, kdyz odstranis prostredni vrstvu
a rozpustis ji v prvni a treti? Klasickou C/S.

Jura
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

Sekundarni index

[*] Milan Fiedler <milanf(zv)rts(tec)cz> - 11.3.1999 07:45:30

Primarni index jsem mel udelany.


Milan Fiedler


-----P�vodn� zpr�va-----
Od: Jan �ebel�k <honza(zv)haes(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 22:52
P�edm�t: Re: Sekundarni index


>Je na te tabulce primarni index?
>Bez nej sekundarni neudelas.
>
>Honza
>=========================================
>= HAES - RNDr. Jan Sebelik
>= http://www.haes(tec)cz
>= Skolici a konzultacni stredisko pro Delphi a Win32
>= Vojtiskova 206
>= 507 81 Lazne Belohrad
>= tel. 0434 692 931
>=========================================
>----------
>Odes�latel: Milan Fiedler <milanf(zv)rts(tec)cz>
>Komu: Konference <delphi-l(zv)fwd(tec)cz>
>P�edm�t: Sekundarni index
>Datum: 10. b�ezna 1999 12:22
>
>Zkousel jsem vytvorit sekundarni index DBASE
>
> table1.Exclusive := True;
> Table1.Open;
> Table1.AddIndex('indBBB', 'BBB', []);
> Table1.Close;
>
>funguje bez problemu, ale v paradoxu mi to nejde, co stim jeste udelat,
nebo jak to udelat !
>Pres SQL se to chova stejne.
>
>Diky
>
>Milan Fiedler
>
>

Restartovat v rezimu MSDOS

[*] Jan Fiala <fiala(zv)infos(tec)cz> - 11.3.1999 07:52:33



>To asi neni presne to co jsem potreboval. Ja potrebuji zavolat takovou
funkci, ktera provede
>presne to co delaji Windows pri vyberu polozky "Vypnout - Restartovat v
rezimu MSDOS" z
>menu "START". U API fce ExitWindowsEx nic takoveho neni a ja to nutne
potrebuji.
>


jestli ti staci ukoncit Windows a spustit DOS program, tak jsem na internetu
nasel nasledujici :

ExitWindows() ma dva parametry. Prvnim je jedna z hodnot
EW_RestartWindows
EW_RebootSystem
EW_ExitAndExecApp
a druhy parametr je pouzit pro start DOS programu. Mozna, kdyby se
odstartoval Command.COM :-)

-----------------------------------------------------------------
ing. Jan Fiala jan.fiala(zv)iname.com
Prog-Soft s.r.o.
INFOS - informaeni system pro napojaoe
-----------------------------------------------------------------

Sekundarni index

[*] Milan Fiedler <milanf(zv)rts(tec)cz> - 11.3.1999 07:55:22

Diky funguje to

Milan Fiedler


-----P�vodn� zpr�va-----
Od: Petr Vones <pvones(zv)mbox.vol(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 23:46
P�edm�t: Re: Sekundarni index


>> Milan Fiedler wrote:
>>
>> Zkousel jsem vytvorit sekundarni index DBASE
>>
>> table1.Exclusive := True;
>> Table1.Open;
>> Table1.AddIndex('indBBB', 'BBB', []);
>> Table1.Close;
>> funguje bez problemu, ale v paradoxu mi to nejde, co stim jeste udelat,
nebo jak to udelat
>
>Ahoj,
>
>Pokud vytvaris v Paradoxu index na jedno pole, tak musi mit stejny nazev
jako
>to pole:
>
> Table1.AddIndex('CITY', 'City', []);
>
>--
>
>Internet proti monopolu. Petr Vones, amatersky programator
>* http://www.bojkot(tec)cz *
>************************
>
>

DLL - registrace

[*] Libor Junek <libor(zv)thsoft(tec)cz> - 11.3.1999 07:56:38

Co je to ta registrace DLL do windows? Neni to napriklad ze knihovna ma fyzicky nazev KRNL...exe a da se volat jako KERNEL? Pokud ano nevite jak se to dela a jesli k tomuto nazvu mohu pristupovat i z jine aplikace?
Dik.

Libor Junek
**************************************
TH SOFT, Kostelni 128
564 01 ZAMBERK
tel. 0446 3897
http://www.thsoft(tec)cz
http://www.zbk(tec)czn(tec)cz
E-mail: libor(zv)thsoft(tec)cz
**************************************

elementarny problem s C/S

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 11.3.1999 07:58:38

> -----Original Message-----
> From: Jaro [mailto:jaro(zv)sinea(tec)cz]
> Sent: Thursday, March 11, 1999 12:27 AM
> To: delphi-l(zv)fwd(tec)cz
> Subject: Re: elementarny problem s C/S

> > neslo. A vubec - myslim, ze trigger AFTER DELETE nema zadny
> vyznam - je
> > potreba pouze BEFORE DELETE.
> ------------
> Tak ja ti uvedu dalsi velmi jednoduchy a jiste potrebny
> priklad. Vedu si
> napr. tabulku s historii zmen, kde si ukladam ktery uzivatel
> provedl jakou zmenu (Insert, update delete) a v kterou dobu.

O Insertu a Updatu se bavit nebudu, tam neni sporu,
ze je potreba BEFORE i AFTER.

> BeforeInsert ..., tak to nebude fungovat
> dobre. Udelam pokus o smazani a diky napr. nastavene
> integrite mi to spravne
> oznami, ze nelze zaznam smazat. Ovsem to jiz probehl ten trigger na
> BeforeDelete a zapsal mi do Histori, ze doslo ke smazani a ono pritom
> nedoslo, ze?

Urcite se zavola BEFORE DELETE pred pokusem mazat?
Ne pred skutecnym vymazanim?

Jura
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

Restartovat v rezimu MSDOS

[*] Mor�ol Marian <Marian.Morzol(zv)ostrava.aksignal(tec)cz> - 11.3.1999 08:12:04

Jestli se ti jedna o ten Dialog tak jsou na to komponenty bud na Torry
nebo na DSP. Skus hledat.

> -----P�vodn� zpr�va-----
> Od: Daniel Jirasek [SMTP:daniel_jirasek(zv)conel(tec)cz]
> Odesl�no: 10. b�ezna 1999 14:45
> Komu: 'delphi-l(zv)fwd(tec)cz'
> P�edm�t: RE: Restartovat v rezimu MSDOS
>
> To asi neni presne to co jsem potreboval. Ja potrebuji zavolat takovou
> funkci, ktera provede
> presne to co delaji Windows pri vyberu polozky "Vypnout - Restartovat
> v rezimu MSDOS" z
> menu "START". U API fce ExitWindowsEx nic takoveho neni a ja to nutne
> potrebuji.
>
> >Nevite nekdo, jak provede prikaz "Restartovat v rezimu MSDOS".
> Prohledal
> jsem cele API, ale
> >nemuzu nic najit.
> >
>
>
> Zkus si udelat nejakeho zastupce, nastav mu, ze musi pracovat v rezimu
> MS_Dos a podivej se na prvni radek CONFIG.SYS. Aspon tak to delaji
> Windows.
> Po navratu z programu ten radek zase zrusi a restartuji
>
>
> -----------------------------------------------------------------
> ing. Jan Fiala jan.fiala(zv)iname.com
> Prog-Soft s.r.o.
> INFOS - informaeni system pro napojaoe
> -----------------------------------------------------------------
>

Znakova stranka

[*] Milan Fiedler <milanf(zv)rts(tec)cz> - 11.3.1999 08:19:25

O komponente TBatchMove vim ze je v Delfach, ale nikdy jsem ji nezkousel.
Nemate tam prosim jednoduchy priklad ze ktereho bych pochopil jeji funkci.

Predem diky mnohokrat


Milan Fiedler

-----P�vodn� zpr�va-----
Od: Petr Vones <pvones(zv)mbox.vol(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 23:52
P�edm�t: Re: Znakova stranka


>> Milan Fiedler wrote:
>>
>> Nez to zacnu delat rad bych slysel vase nazory,
>>
>> Mam delat prevod z jedne znakove stranky tabulky do jine.
>> Co mi poradite.
>
>Ahoj,
>
>Pokud tim mas namysli to, ze prevadis data z jedna tabulky do druhe a
>kazda z nich ma jinou kodovou stranku, tak muzes pouzit TBatchMove ktery
>to cele zaridi. Pokud by jsi to chtel delat rucne, tak by to slo pomoci
>prevodu obou kodovani na jedno spolecne, k tomu jsou urceny BDE API funkce
>DbiAnsiToNative a DbiNativeToAnsi.
>
>--
>
>Internet proti monopolu. Petr Vones, amatersky programator
>* http://www.bojkot(tec)cz *
>************************
>
>

Tlacitko Co to je?

[*] SPELZA s.r.o. <spelzasro(zv)brno(tec)comp(tec)cz> - 11.3.1999 08:22:10

Myslel jsem si to ale p�edpokl�dal jsem, �e to W95 d�l� automaticky.
Tak�e si to mus�m obslou�it s�m. Je to tak?

Jara.

-----P�vodn� zpr�va-----
Od: Mal� Dobromil <dodo(zv)rak.pr.ds.mfcr(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 10. b�ezna 1999 17:22
P�edm�t: RE: Tlacitko Co to je?>�ek bych, �e to nen� tla��tko, ale PopUp menu...
>
>> ----------
>> Od: SPELZA s.r.o.[SMTP:spelzasro(zv)brno.comp(tec)cz]
>> Odesl�no: 10. b�ezna 1999 14:55
>> Komu: delphi-l(zv)fwd(tec)cz
>> P�edm�t: Tlacitko Co to je?
>>
>> Pro aplikaci v D4 p�u help ale nejsem schopen doc�lit toho
>> aby se mi po stisku prav�ho tla��tka my�i nad komponentou
>> objevilo tla��tko Co to je?. F1 i ikona ? funguje ale to zatracen�
>> tla��tko
>> ne. Mus�m to n�jak o�et�it s�m anebo to je ji� zabudov�no
>> ve W95.
>>
>> D�ky. Jara.
>>

Kl�vesa F1

[*] SPELZA s.r.o. <spelzasro(zv)brno(tec)comp(tec)cz> - 11.3.1999 08:28:00

P�esn� tak to m�m a p�esto mi to u hlavn�ho formul��e nefunguje.

Jara.

-----P�vodn� zpr�va-----
Od: Petr Vones <pvones(zv)mbox.vol(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 11. b�ezna 1999 0:10
P�edm�t: Re: Kl�vesa F1


>"SPELZA s.r.o." wrote:
>>
>> Je�t� jeden probl�m m�m u aplikace pro D4. Nefunguje mi F1 pro vyvol�n�
>> helpu u hlavn�ho formul��e. Nev�te jak na to?
>
>Ahoj,
>
>Musis zadat nazev help souboru do Application.Help a u vizulnich komponent
>pak zadat cislo helpcontextu do vlastnosti HelpContext, pricemz pokud je
>nula, tak se pouzije hodnota parenta.
>
>--
>
>Internet proti monopolu. Petr Vones, amatersky programator
>* http://www.bojkot(tec)cz *
>************************
>

Kl�vesa F1

[*] Petr Hartman <medisoft(zv)uo.fairnet(tec)cz> - 11.3.1999 08:35:08

>"SPELZA s.r.o." wrote:
>>
>> Je�t� jeden probl�m m�m u aplikace pro D4. Nefunguje mi F1 pro vyvol�n�
>> helpu u hlavn�ho formul��e. Nev�te jak na to?
>
>Ahoj,
>
>Musis zadat nazev help souboru do Application.Help a u vizulnich komponent
>pak zadat cislo helpcontextu do vlastnosti HelpContext, pricemz pokud je
>nula, tak se pouzije hodnota parenta.


To je sice pravda, ale u MDIForm okno to nefunguje. Proc ?

S pozdravem
Petr Hartman

Tlacitko Co to je?

[*] Mal� Dobromil <dodo(zv)rak.pr.ds.mfcr(tec)cz> - 11.3.1999 08:36:12

Zkus dat jeste na formular tlacitko help
(do praveho horniho rohu, jak je minimize, maximize, close)...

Taky by jsi mel mit uveden helpovy soubor k aplikaci a ta komponenta
by mela mit nejaky helpcontext, s tim, ze je tento helpcontext uveden
v help projektu a tam odkazan na nejake konkretni tema.

Dobra.
Pozdeji to vyskousim... /na D3/

>Myslel jsem si to ale p�edpokl�dal jsem, �e to W95 d�l�
automaticky.
>Tak�e si to mus�m obslou�it s�m. Je to tak?
>
>>�ek bych, �e to nen� tla��tko, ale PopUp menu...
>>>
>>> Pro aplikaci v D4 p�u help ale nejsem schopen doc�lit toho
>>> aby se mi po stisku prav�ho tla��tka my�i nad komponentou
>>> objevilo tla��tko Co to je?. F1 i ikona ? funguje ale to
zatracen�
>>> tla��tko
>>> ne. Mus�m to n�jak o�et�it s�m anebo to je ji� zabudov�no
>>> ve W95.

Prace s databazi v siti

[*] Jiri Toman <jiri.toman(zv)seznam(tec)cz> - 11.3.1999 08:36:58

Petr Brant p�e:

> Pouzivam D3 Standard, pracuji s tabulkou DBF (FoxPro 2.5), ktera ma
> kolem 600 zaznamu a pouhe dva sloupce. Z databaze se ma predevsim cist,
> zapis je vzacny. Tak jsem (podotykam, ze bez jakekoli konfigurace BDE -
> nevyznam se v tom) aplikaci spustil na dvou masinach a obe pristupovaly
> na server s databazi. Otevreni tabulky probehlo na obou strojich v
> poradku, ale tanec zacal, kdyz oba dva stroje zacaly realizovat nejakou
> tu query. Stridave se na jednom i na druhem pocitaci objevila hlaska
> "Directory is controlled by other .NET file", obcas se objevilo i to, ze
> "File not exist" a jmeno souboru r:\projekty\translate\pdoxusr.lck nebo
> tak podobne.
>
> Nevite nekdo co s ti, resp. jak nastavit BDE, aby to chodilo sitove?

Nevim jak to chodi ve FoxPro, ale v Paradoxu se na siti na obou PC musi
nastavit
v BDE administratoru / Configuration / Paradox / NET DIR - v polozce
net dir
cesta kde je umisten paradox.net (pdoxusrs.net). Tato cesta musi byt
stejna pro
oba pocitace. Pres tento soubor je rizen pristup k DB.
Jirka T.

Trideni DataSetu

[*] Mal� Dobromil <dodo(zv)rak.pr.ds.mfcr(tec)cz> - 11.3.1999 08:39:05


RX library toto resi... pomoci TRxQuery a TRxDBGrid to lze udelat
celkem jednoduse, pouzivas-li ji, taxe podivej na to RxDemo...
Dobra

> -----Puvodni zprava-----
> Od: Polak Jiri [SMTP:Jiri.Polak(zv)tconsult(tec)cz]
> Odeslano: 10. boezna 1999 10:33
> Komu: delphi-l(zv)fwd(tec)cz
> Poedmit: Trideni DataSetu
>
>
> Vite nekdo neco o trideni datasetu?
> Nemyslim ORDER BY v SELECTU, chtel bych
> umoznit uzivateli, aby mohl podle ruznych sloupcu
> tridit jiz nactena data. Existuje free potomek TQuery,
> ktery by to umel?
>
>

Pocet barev

[*] Mal� Dobromil <dodo(zv)rak.pr.ds.mfcr(tec)cz> - 11.3.1999 08:45:35

This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

Ahoj vsichni...
...nevite nekdo, jak zjistit, v kolika barvach jedou Windowsy ?
Jestli v 16-ti, 256-ti, nebo 16bit a vice ?

Nasel jsem nejakou API fci GetSysColor, ale to neni ono, zkratka
bych chtel zobrazit logo programu s nevetsim moznym poctem barev
a taxem si dal do resource souboru tri bitmapy a ted bych
potreboval "natahnout" tu spravnou.
Diky moc...
...Dobra


elementarny problem s C/S

[*] reaia(zv)snt(tec)cz (REAiA CONSULTING, s. r. o.) - 11.3.1999 08:48:42

-----P�vodn� zpr�va-----
Od: Jaro <jaro(zv)sinea(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 11. b�ezna 1999 1:36
P�edm�t: Re: elementarny problem s C/S

>O jake nove technologii mluvis? Ja myslel, ze chces pouzivat C/S
>technologii. A prikladu, jak prave tohle zajistit tu bylo uvedeno cela rada
>(pristupova prava, triggery, transakce, zmena logiky navrhu databaze -
>rozpad tabulek, atd ) Technologie C/S predpoklada urcity jiny zpusob
>mysleni, navrhu databaze i programovani. To je obsahem i cilem teto
>technologie. Jestli chci tuto technologii vyuzivat, pak se ji musim
>prizpusobit a ne se znazit technologii prizpusobovat svym predstavym,
>protoze pak se mi muze stat, ze uz to nebude ta C/S technologie, ale neco
>jineho. Videl jsem nektere programy, ktere pouzivaly drahy databazovy
stroj,
>ale do C/S mely moc daleko.
Cau,
Moc ale nechapu argument, proc by nekdo mel
pouzivat nejakou technologii jen proto, aby to bylo "ciste" reseni.
Dulezite je, aby to spolehlive fungovalo a plnilo pozadovanou funkci.
Vsechno ostatni jsou podle mne zbytecny kecy. Myslim, ze C/S
taky existuje jen proto, ze se tim proste resi urcita trida
problemu za urcite penize a usili vynalozene na vyvoj.
Nedejme se mast technologii - dulezite je uspokojiva funkcnost
vysledku. Tj. zasadne jsem pro prizpusobovani technologie
predstavam zakaznika o funkcnosti vysledku a ne jinak.
Technologie je pro lidi a ne lidi pro technologii.
Martin Kvapilik


QReport preview

[*] Stanislav Cerny <s.cerny(zv)mod(tec)cz> - 11.3.1999 08:51:04

Ahojte

pouzivam sestavu v Qreportu a pred tiskem Prewiev na vlastnim Formu.

PrevForm.Show;
QTisky.QTisk1.Preview;

Po zavreni PrevForm se to chova divne, v kodu se nevrati na misto odkud
jsem dal Preview. Proc? Co s tim udelat?

Standa

elementarny problem s C/S

[*] Pavel Cisar <pcisar(zv)aktis(tec)cz> - 11.3.1999 08:51:27

Haj hou!

From: Jaro <jaro(zv)sinea(tec)cz>
>Jenze kdyz tech deklaraci bylo vice, tak nam to na Interbazi
delalo chyby.
>Mam 5.0. Na 5.5 jsem to nezkousel. Ani nevim co je na tej 5.5
vlastne noveho


Ohoho! Honem rychle prejdete na 5.5 (je to prakticky zadarmo).
Jde predevsim o pravene chyby.

DBGrid: Zistenie hodnoty v policku pocas editacie

[*] Branislav Danko <danko(zv)basl.sk> - 11.3.1999 08:52:58


Vdaka Peter, je to presne to co som potreboval.

S pozdravom Branislav Danko.

-----P�vodn� zpr�va-----
Od: Petr Vones [SMTP:pvones(zv)mbox.vol(tec)cz]
Odesl�no: 10. marec 1999 22:19
Komu: delphi-l(zv)fwd(tec)cz
P�edm�t: Re: DBGrid: Zistenie hodnoty v policku pocas editacie

Ahoj,

Slo by to napriklad takhle:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, Grids, DBGrids, DBTables, ExtCtrls, DBCtrls, StdCtrls, Mask;

const
UM UPDATEVALUE = WM USER + $100;

type
TForm1 = class(TForm)
Table1: TTable;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
Table1POLICKO1: TFloatField; // nastavit v Object Inspectoru vlastnost Tag na 1
Table1POLICKO2: TFloatField; // nastavit v Object Inspectoru vlastnost Tag na 1
Table1TEXT: TStringField;
procedure Table1POLICKO1Change(Sender: TField);
procedure Table1POLICKO2Change(Sender: TField);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
private
class function CanUpdateValue(DBGrid: TDBGrid): Boolean;
procedure UMUpdateValue(var Msg: TMessage); message UM UPDATEVALUE;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

const
Konstanta = 2;

procedure TForm1.Table1POLICKO1Change(Sender: TField);
var
SaveEvent: TFieldNotifyEvent;
begin
SaveEvent := Table1POLICKO2.OnChange;
try
Table1POLICKO2.OnChange := nil;
Table1POLICKO2.Value := Table1POLICKO1.Value / Konstanta;
finally
Table1POLICKO2.OnChange := SaveEvent;
end;
end;

procedure TForm1.Table1POLICKO2Change(Sender: TField);
var
SaveEvent: TFieldNotifyEvent;
begin
SaveEvent := Table1POLICKO1.OnChange;
try
Table1POLICKO1.OnChange := nil;
Table1POLICKO1.Value := Table1POLICKO2.Value * Konstanta;
finally
Table1POLICKO1.OnChange := SaveEvent;
end;
end;

procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if CanUpdateValue(TDBGrid(Sender)) then
PostMessage(Handle, UM UPDATEVALUE, 0, Integer(Sender));
end;

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if CanUpdateValue(TDBGrid(Sender)) then
PostMessage(Handle, UM UPDATEVALUE, 0, Integer(Sender));
end;

type
TDBGridHack = class(TDBGrid);

class function TForm1.CanUpdateValue(DBGrid: TDBGrid): Boolean;
begin
with DBGrid do
Result := EditorMode and (SelectedField <> nil) and (SelectedField.Tag = 1);
end;

procedure TForm1.UMUpdateValue(var Msg: TMessage);
begin
with TDBGridHack(Msg.LParam) do
if (DataSource.DataSet.State in [dsEdit, dsInsert]) and
CanUpdateValue(TDBGrid(Msg.LParam)) then
SelectedField.AsString := InplaceEditor.Text;
end;

end.

--

Internet proti monopolu. Petr Vones, amatersky programator
* http://www.bojkot(tec)cz *
************************

BIOS a info o HW

[*] Martin Lasevic <vyvoj(zv)atlascon(tec)cz> - 11.3.1999 08:53:31

Houstone, mame problem!

nevim, jestli v zaplave elementarnich problemu nekdo cetl moji prosbu, a tak ji hazu do
fora znova. Prosim o pomoc ci radu ( kdyby se ozval Viktor, byl bych rad).

Jak zjistit z BIOSu nebo z neceho jineho, ze dany pocitac je notebook? Je nejaky priznak
nebo se musim chytit nejake anomalie? Nebo by snad byla k dispozici nejaka API funkce?

Diky za kazde postrceni Leninskou cestou vpred.

Martin Lasevic
Preji hezky den .....
============================================
ML Software - Martin Lasevic
Budovatelska 459,
708 00 Ostrava - Poruba
tel.: + 420 (69) 691 85 11, 0603 338 765
E-mail : ml_software(zv)email(tec)cz
htt://www.mujweb(tec)cz/www/ml_software
============================================

DBGrid: Zistenie hodnoty v policku pocas editacie

[*] Branislav Danko <danko(zv)basl.sk> - 11.3.1999 08:54:49


Som kludny, co mam robit dalej?

-----P�vodn� zpr�va-----
Od: Jan ?ebel�k [SMTP:honza(zv)haes(tec)cz]
Odesl�no: 10. marec 1999 19:12
Komu: delphi-l(zv)fwd(tec)cz
P�edm�t: Re: DBGrid: Zistenie hodnoty v policku pocas editacie

Predpokladam, ze vyuzijes udalost OnChange na prislusnem policku.
Nechces toho ale trochu moc20
Co to ma za smysl ovlivnovat POLICKO2 jeste pred ukoncenim editace POLICKO1?

Muzes sice to OnChange zavolat na OnKeyDown, na Timer nebo neco takoveho, ale nejdriv se zkus uklidnit.

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes(tec)cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 931
=========================================

elementarny problem s C/S

[*] Zbysek Hlinka <zhlinka(zv)login(tec)cz> - 11.3.1999 09:08:41

Polak Jiri wrote:

> > Jak udelas napriklad toto? Mas tabulku T1 svazanou referencni
> > integritou s T2. V T1 jsou rodice, v T2 deticky. Kdyz vymrou
> > deticky, je treba se zbavit jejich rodice. Nenapada me nic lepsiho, nez
> > povesit na After Delete dotaz, zda jeste existuje v tabulce nejake
> > detatko, a pokud ne, zrusim i prislusneho rodice. Upozornuji, ze na
> > Before Delete toto nelze.
>
> Jo, takovy pripad me nenapadl. To je kaskadovy delete
> v opacnem smeru a nikdy jsem se s takovou potrebou nesetkal.
> Tady by AFTER byl pohodlnejsi, ale v BEFORE by to taky slo.
> Misto exist pouziju if select count(*) <= 1 then delete z rodice.
> Aspon doufam, ze se nikde nevola delete pro prikaz, ale
> vzdy pro kazdy mazany zaznam.

:-)) Muzes si to vyzkouset. Az ti to bude rvat, ze smazani brani
referencni integrita (rodic ma stale to posledni detatko), tak se
nediv.

After je treba ve vsech trech pripadech.


S pozdravem

Zbysek Hlinka
E-mail: zhlinka(zv)login(tec)cz, localizator(zv)localizator.com
Tel.: 02/795 29 56; GSM: 0603 551 282
Krystofova 1016, 149 00 Praha 4
CZ


Trideni DataSetu

[*] Polak Jiri <Jiri.Polak(zv)tconsult(tec)cz> - 11.3.1999 09:21:48

> -----Original Message-----
> From: Martin Lasevic [mailto:vyvoj(zv)atlascon(tec)cz]
> Sent: Thursday, March 11, 1999 7:13 AM
> To: 'delphi-l(zv)fwd(tec)cz'
> Subject: RE: Trideni DataSetu
>
>
> A co takhle to resit tak, ze mas Query a na DBGridu, ktery je
> poveseny na
> DataSource s TQuery pres udalost OnDoubleClick sestavis znova
> to Query.
> Podle DoubleClicku bys mel zrejme vedet i na jaky sloupec a
> tim pole Query
> lze postavit Field do sekce ORDER BY.
> Tomu se bez pouziti indexu zrejme asi nevyhnes.

Jak jsem psal, to prave nechci delat.

DataSet ma nejake cache, ve kterych si data pamatuje.
property Buffers podle helpu obsahuje pouze data zobrazena v gridu.
Znamena to, ze kdyz listuju gridem, tak se data opakovane zahazuji,
aby se pri navratu na predchozi stranku mohla znovu nacitat ze serveru?

DataSet musi mit dalsi Cache - pro cached updates.

Existuje Buffer pro vsechna dosud nactena data?

Jura
----------
Jiri Polak
e-mail:jura.polak(zv)email(tec)cz
jiri.polak(zv)tconsult(tec)cz
web :http://freeweb.coco(tec)cz/jpolak
----------
The only good bug, is a dead bug!

mwEdit

[*] Krayzel Libor <Libor.Krayzel(zv)czech-tv(tec)cz> - 11.3.1999 09:21:30

Zdravim,

zkousel nekdo z Torry mwEdit?

L. Krayzel


Kl�vesa F1

[*] Karel Chmel <kchmel(zv)csob(tec)cz> - 11.3.1999 09:23:18

a je na hlavnim formulari nejake editacni policko nebo neco podobneho,
s cim se da pracovat z klavesnice?

----------
Odes�latel: SPELZA s.r.o. <spelzasro(zv)brno.comp(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz
P�edm�t: Re: Kl�vesa F1
Datum: 11. b�ezna 1999 8:28

P�esn� tak to m�m a p�esto mi to u hlavn�ho formul��e nefunguje.

Jara.

-----P�vodn� zpr�va-----
Od: Petr Vones <pvones(zv)mbox.vol(tec)cz>
Komu: delphi-l(zv)fwd(tec)cz <delphi-l(zv)fwd(tec)cz>
Datum: 11. b�ezna 1999 0:10
P�edm�t: Re: Kl�vesa F1


>"SPELZA s.r.o." wrote:
>>
>> Je�t� jeden probl�m m�m u aplikace pro D4. Nefunguje mi F1 pro vyvol�n�
>> helpu u hlavn�ho formul��e. Nev�te jak na to?
>
>Ahoj,
>
>Musis zadat nazev help souboru do Application.Help a u vizulnich komponent
>pak zadat cislo helpcontextu do vlastnosti HelpContext, pricemz pokud je
>nula, tak se pouzije hodnota parenta.
>
>--
>
>Internet proti monopolu. Petr Vones, amatersky programator
>* http://www.bojkot(tec)cz *
>************************
>
----------


elementarny problem s C/S (final word)

[*] Pavel Cisar <pcisar(zv)aktis(tec)cz> - 11.3.1999 09:28:45

Haj hou!

Rad bych shrnul a definitivne uzavrel dlouhou diskusi s Martinem
o lekarskych zpravach, sexualnim zivote pedagogu, babach na pive
a zamcich. V podstate se vse toci okolo pozadavku na exkluzivni
editaci urcite polozky v case, coz je obecny problem ktery se v
paxi pomerne casto vyskytuje.

1.) Cela C/S technologie je zalozena na principu optimistickeho
zamykani, tedy kolize se resi az kdyz nastanou a jejich
pravdepodobnost se minimalizuje dobrym navrhem databaze. Pokud je
system navrzen tak, ze pro svou spravnou funkci vyzaduje 100%
jistotu ze ke kolizi nedojde, je neco spatneho uz v samotnem
navrhu.

2.) Pokud se tomuto pozadavku lze vyhnout, je dobre se mu
vyhnout. Vyvojar C/S aplikaci by na neco takoveho nikdy nemel sam
o sobe pomyslet, musi k tomu byt donucen zakaznikem, a i pak by
mel kricet, skemrat, vyhrozovat a premlouvat, aby se tomu vyhnul.

3.) Pokud nelze jinak (neb i to se muze stat), je nutne si
uvedomit, ze nelze v zadnem pripade zvolit a pouzit dobre reseni,
vsechna budou uz z principu spatna. Nektera vice, nektera mene,
zalezi na situaci. Kazdopadne doporucuji zcela se vyhnout
resenim, ktera jsou zavysla na implementacnich vlastnostech
konkretniho serveru a predevsim ovlivnujicich transakcni
zpracovani, tzn. pokud mozno zadne priznaky primo v tabulce (kdyz
uz, tak v jine, spise priznaky pridavat a mazat nez editovat
atd.). Synchronizace mimo SQL server je vzdy vyhodnejsi, protoze
ji vyvojar ma plne pod kontrolou (presne vi, co se deje a jaky to
ma dopad) at uz je pouzit jakykoliv system (DBF, COM server pro
zamky, filesystem, zasilani zprav atd.).

Na zaver nutno podotknout, ze nektere implementace (zalezi na
konkretnim pripade) mohou uspesne fungovat. Nicmene nikdy si jimi
clovek nemuze byt jist na 100% (vzdy je tu moznost necekaneho
kolapsu pri zmene pracovnich podminek).

Howgh!.

elementarny problem s C/S

[*] Pavel Cisar <pcisar(zv)aktis(tec)cz> - 11.3.1999 09:32:31

Haj hou!

From: REAiA CONSULTING, s. r. o. <reaia(zv)snt(tec)cz>
>Moc ale nechapu argument, proc by nekdo mel
>pouzivat nejakou technologii jen proto, aby to bylo "ciste"
reseni.
>Dulezite je, aby to spolehlive fungovalo a plnilo pozadovanou
funkci.
>Vsechno ostatni jsou podle mne zbytecny kecy. Myslim, ze C/S
>taky existuje jen proto, ze se tim proste resi urcita trida
>problemu za urcite penize a usili vynalozene na vyvoj.
>Nedejme se mast technologii - dulezite je uspokojiva funkcnost
>vysledku. Tj. zasadne jsem pro prizpusobovani technologie
>predstavam zakaznika o funkcnosti vysledku a ne jinak.
>Technologie je pro lidi a ne lidi pro technologii.


To je sice pravda, ale delat z raketoplanu pramici je taky
nesmysl. Kazda technologie ma sve vlastnosti a pokud ma dobre
fungovat, musi byt pouzita spravne. Existuji urcite meze, kde uz
nejde o uspusobovani technologie zakaznikovy, ale o pripad spatne
zvolene technologie.

Nebo ne ?

Pocet barev

[*] mdvorak(zv)csas(tec)cz - 11.3.1999 09:38:09

V WIN-API je funkce GetDeviceCaps (The GetDeviceCaps function retrieves
device-specific information about a specified device).

Mirek Dvorak > -----Original Message-----
> From: Mal� Dobromil [mailto:dodo(zv)rak.pr.ds.mfcr(tec)cz]
> Sent: Thursday, March 11, 1999 8:46 AM
> To: #Delphi-K
> Subject: Pocet barev
>
> Ahoj vsichni...
> ...nevite nekdo, jak zjistit, v kolika barvach jedou Windowsy ?
> Jestli v 16-ti, 256-ti, nebo 16bit a vice ?
>
> Nasel jsem nejakou API fci GetSysColor, ale to neni ono, zkratka
> bych chtel zobrazit logo programu s nevetsim moznym poctem barev
> a taxem si dal do resource souboru tri bitmapy a ted bych
> potreboval "natahnout" tu spravnou.
> Diky moc...
> ...Dobra


Trideni DataSetu

[*] Martin Lasevic <vyvoj(zv)atlascon(tec)cz> - 11.3.1999 09:40:31

A co takhle pouzi property RequestLive na True? To by nezabralo? V te chvili se totiz jde primo na tabulku.
Martin
Preji hezky den .....
============================================
ML Software - Martin Lasevic
Budovatelska 459,
708 00 Ostrava - Poruba
tel.: + 420 (69) 691 85 11, 0603 338 765
E-mail : ml_software(zv)email(tec)cz
htt://www.mujweb(tec)cz/www/ml_software
============================================
-----Puvodni zprava-----
Od: Polak Jiri [SMTP:Jiri.Polak(zv)tconsult(tec)cz]
Odeslano: 11. boezna 1999 9:22
Komu: 'delphi-l(zv)fwd(tec)cz'
Poedmit: RE: Trideni DataSetu

<<Soubor: ATT00019.txt; charset = windows-1250>>

button

[*] Dodek <Dodek(zv)cbmi.cvut(tec)cz> - 11.3.1999 10:02:44

zdravim,
nevi nekdo jak pridat vlastni tlacitko do praveho horniho rohu formulare
vedle tlacitek MINIMALIZOVAT, MAXIMALIZOVAT, ZAVRIT.

Nedavno jsem to u jednoho programu videl ale vubec netusim jak na to ....


diky
Pepa



© Delphi.cz, program netcode.cz, 2008-9.