Šta je novo?

Potrebna pomoc (delphi7)

Sasha

Čuven
Učlanjen(a)
30.08.2000
Poruke
753
Poena
619
Cao.
Da li bi mi neko mogao reci kako da
povezem StringGrid sa bazom (paradox 7) ?

Hvala :)
 
Bas TStringGrid ili postojeci TDBGrid?
 
Ima li nekog posebnog razloga bas za TStringGrid?

Posto moras da napravis svoju klasu i modifikujes TStringGrid da bude DataAware i ako radis dobro, dobices na kraju DBGrid :d
 
Razlog: moram da koristim bas StringGrid,
jer tako pise u zadatku koji sam dobio. :wall:
 
E, onda nema sta da ga povezujes, nego ima da 'radis'.

Pravilan objektni pristup bi bio onda na napravis svoju klasu koja nasledjuje TStringGrid i koja postaje data-aware sa svim eventovima, ali izgleda da to nije bila namera onoga koji ti je zadao taj zadatak. Drugi nacin je 'na seljaka' iliti 'peske'.

E sad, ovo 'povezati sa bazom' je prilicno neodredjeno - da li samo da prikaze sta ima po tabelema ili da dozvoljava i druge operacije - upisa, edita, itd. Ali hajde da ti opisem genericki tj. najopstiji pristup -> necu ti pisati kod, nego samo opisati postupak, da i ti ima sta da radis :)
Pretpostavimo da se ne zna nista o bazi osim da je paradox tipa i da se najverovatnije koristi BDE - ne zna se koliko i kakvih tabela ima, kakva im je struktura, itd.
U tu svrhu ne najjednostavnije na formu staviti TPageControl - tako da dodje po jedan TTabSheet i jedan TStringGrid po tabeli.
Prvo ti treba TDatabase komponenta iz BDE palete (svejedno da li je spustis na formu ili kreiras iz koda). Postavis sve parametre - driver na 'standard', path do baze, itd.
Obradis zatim AfterConnect event od TDatabase. U njemu koristis TDatabase.GetTableNames funkciju da bi dobio povratnu informaciju koliko tabela ima i koja su im imena (funkcija smesta te informacije u listu). Uzmes tu listu i krenes kroz nju - za svaki element liste kreiras jedan novi tabsheet (ime tabele postavis kao ime tabsheeta) i u njemu kreiras po jedan TStringGrid, kao i po jednu TTable ili TQuery ili drugu dataset komponentu. Popunis tu (recimo TTable) komponentu sa podacima - vezes je na svoj TDatabase, popunis ime tabele koje si uzeo iz liste, itd. Sad mozes da pitas taj TTable objekat da ti da informacije o strukturi tabele - daje ti FieldList i FieldCount propertije. Na osnovu toga znas koliko stubaca u TStringGrid treba da kreiras i ako zelis da stavis imena fieldova gore u prvom redu. Ako otvaranje tabele prodje uspesno, jednostavno citas tabelu u petlji (while not eof) i dodajes jedan po jedan red u stringgridu i popunjavas ga. Tu ti ne trebaju imena polja, nego citas to sa ttable propertijem Fields[n] i upisujes u stringgrid.cells[n,m].
I to je to u principu da otvoris nepoznatu bazu, prikazes sve tabele i njihov sadrzaj pomocu stringgridova. Za nesto vise moras da obradis tstringgrid i njegove eventove za tastaturu i shodno tome menjas state od ttable komponente koja je izvor podataka za taj grid - da ga stavljas u browse, edit ili neki drugi state i da okidas post/cancel. Takodje ti treba indikator trenutne pozicije, a ostaje i dosta drugih stvari da se sredi ako se to namerava koristiti za bilo sta smisleno, recimo field ili record locking (tj ako dva korisnika u isto vreme menjaju istu stvar u tabeli.
 
nisi napisao kakvog je tipa "baza", i kakvi su podaci u njoj
 
Treba mu samo vrsta baze - i to je rekao (Paradox7), a za sve ostalo moze da pita samu bazu.
 
silverglider je napisao(la):
Treba mu samo vrsta baze - i to je rekao (Paradox7), a za sve ostalo moze da pita samu bazu.

Moja greska priznajem, u tom slucaju nek sedne i nek (mnogo) radi, po tvojim uputima.

Srecan rad.
 
Poslednja izmena:
Nazad
Vrh Dno