🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #347012

Re: Pomysł a funkcjonalność - prośba o poradę

#347012
From: immo
Date: Fri, 17 May 2019 11:10
50 lines
5656 bytes
W dniu środa, 15 maja 2019 17:34:12 UTC+2 użytkownik zpksoft napisał:
> W dniu środa, 15 maja 2019 17:23:16 UTC+2 użytkownik Krzysztof Szyszka napisał:
> > > To czy i jakie pojęcie mam to nie do Twojej oceny bo Twoja wiedza na temat mojej wiedzy jest
> > > żadna. Takie kontrolki musisz zbindować ze źródłem danych. I o to mi chodziło.
> > > Jeżeli źródło danych ma krótkie życie i jest powiązane z danymi w sposób określany dynamicznie to
> > > tworzenie tych powiązań w kodzie to właśnie dla mnie drutowanie. Ale to już dyskusja akademicka.
> > 
> > Ty nadal nie wiesz, co to jest kontrolka dbaware :-) Zrozum wreszcie, że dbaware oznacza kontrolkę
> > sterowaną przez źródło danych (property DataSource), czyli to baza danych, a konkretnie to jedna
> > kontrolka DAC (np. TFDQuery), która łączy się z bazą danych, steruje wszystkimi kontrolkami
> > wizualnymi podłączonymi do wspólnego źródła danych, a kontrolki dbaware z automatu obsługują
> > wszystkie zdarzenia, jakie generuje źródło danych: Insert, Delete, Edit, Post, Cancel i to bez
> > pisania żadnego kodu, a Ty tu wyjeżdżasz z druciarstwem i krótkim życiem źródła danych.
> > 
> > Jest nawet DBNavigator, który pozwala użytkownikowi tworzyć te zdarzenia wizualnie na formatce,
> > więc nawet nie potrzeba żadnych dodatkowych buttonów do zapisania zmian wprowadzonych przez
> > użytkownika do bazy danych, a jeśli źródło danych może pracować w trybie "cached updates",
> > to masz również do dyspozycji przyciski ApplyUpdates i CancelUpdates, ale dla Ciebie to jest
> > druciarstwo, bo wymaga podłączenia jednego DataSource, zamiast pisania zajebistego kodu.
> > Zastanów się czasem co piszesz, albo nie pisz wcale, jak czegoś nie znasz lub nie rozumiesz :-)
> > 
> > > Dawno temu doszedłem do wniosku, ze kontrolki dbaware są może i sprytne ale do prostych
> > > zastosowań.
> > 
> > Tak informacyjnie, mój X-DBGrid to też kontrolka dbaware, ale tylko do prostych zastosowań,
> > bo do pełnej funkcjonalności Excela jeszcze jej trochę brakuje ;-)
> > 
> > -- 
> > pozdrowienia
> > Krzysztof Szyszka, X-Files Software
> > Developer of X-DBGrid Component
> > Embarcadero Technology Partner
> > http://www.x-files.pl/
> 
> Wymądrzasz się i krytykujesz.
> Ale odpowiem bo widzę że Ty nie rozumiesz. Tylko w prostych przypadkach masz w gridzie widok jednej tabeli. Zwykle jest to widok różnych pól z różnych tabel. I jak tu zrobić automatyczny insert/delete? Na czym? (możesz nie odpowiadać)
> 
> Paweł

No i?

Większość sensownych komponentów dostępowych do baz ma możliwość łączenia widoku i robienia insert/update na wielu tabelach. 

Pomijam sensowność grzebania "bezpośrednio" na tabelach, chyba że nie używasz do tego żadnego serwera bazodanowego lub sprowadzasz go jedynie do roli przechowywania danych.
W większych projektach istotnym jest rozdzielenie fizycznej struktury bazy danych (tabel) od tego co możemy wyświetlić (widoki) oraz dodawać/zmieniać (procedury). Daje to nam niezależność widoku od struktury która może się zmieniać, i nie każda zmiana w strukturze pociąga od razu zmianę kodu aplikacji.

Poza tym (trochę odbiegając od wątku) takie tworzenie SQLa jak pokazałeś powyżej to jest "drutowanie" najwyższej klasy. Ogólnie - takie wymaganie (generowania SQLa wg parametrów) to norma, ale na litość opakuj to w jakiś SQL generator. Raz napisany i przetestowany pozwoli unikać błędów i problemów w przyszłości. IMHO to jeden z pierwszych elementów które trzeba ogarnąć gdy odchodzi się od klikanego programowania...

pozdrawiam,
Przemek O.
Technical Details
Message-ID: <e559209a-fd84-4206-a081-6b13e56d7821@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!i64no129365iti.0!news-out.google.com!p73ni120itp.0!nntp.google.com!u76no127940ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <f1d5f52e-7035-41ad-a7bb-b78126030630@googlegroups.com> <002449dc-a011-4ede-9274-800249fd0699@googlegroups.com> <5cdb42f1$0$531$65785112@news.neostrada.pl> <0fd326ca-4ef2-402a-81a3-09d36f322b9d@googlegroups.com> <qbgv5q$3f6$1@node2.news.atman.pl> <98f7302e-73d3-42cd-8017-d762169aecf7@googlegroups.com> <qbhat3$ead$1@node2.news.atman.pl> <16cb3810-8959-4887-8e67-9d268ad7b9e7@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a24:910b:: with SMTP id i11mr14930373ite.76.1558091426581;        Fri, 17 May 2019 04:10:26 -0700 (PDT)
X-Received: by 2002:aca:ea89:: with SMTP id i131mr12918590oih.22.1558091426278; Fri, 17 May 2019 04:10:26 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.unit0.net!newsreader4.netcologne.de!news.netcologne.de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!i64no129365iti.0!news-out.google.com!p73ni120itp.0!nntp.google.com!u76no127940ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi
Date: Fri, 17 May 2019 04:10:25 -0700 (PDT)
In-Reply-To: <16cb3810-8959-4887-8e67-9d268ad7b9e7@googlegroups.com>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.65.27.242; posting-account=uWBjDgoAAACxkgIP6dtE4dpCnc16V86n
NNTP-Posting-Host: 77.65.27.242
References: <f1d5f52e-7035-41ad-a7bb-b78126030630@googlegroups.com> <002449dc-a011-4ede-9274-800249fd0699@googlegroups.com> <5cdb42f1$0$531$65785112@news.neostrada.pl> <0fd326ca-4ef2-402a-81a3-09d36f322b9d@googlegroups.com> <qbgv5q$3f6$1@node2.news.atman.pl> <98f7302e-73d3-42cd-8017-d762169aecf7@googlegroups.com> <qbhat3$ead$1@node2.news.atman.pl> <16cb3810-8959-4887-8e67-9d268ad7b9e7@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <e559209a-fd84-4206-a081-6b13e56d7821@googlegroups.com>
Subject: Re: Pomysł a funkcjonalność -
 prośba o poradę
From: immo <przemek-o@soft-system.pl>
Injection-Date: Fri, 17 May 2019 11:10:26 +0000
X-Received-Bytes: 6199
X-Received-Body-CRC: 1283395070
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit