[ medixsa @ 23.07.2008. 21:01 ] @
POzdrav !!!

Delphi 7

Dbase DBF

Pitanje ?

Da li moguce uraditi renumerisanje autoincement polje npr.

Rb NAziv
**********
1
3
4
5
7
8
9
13
16

da slozi od 1 do 16 po redoslijedu...

Hvala na odgovoru !!!

[ Miloš Baić @ 24.07.2008. 08:04 ] @
Renumerisanje ili da se izvrši order by kolone!?! Malo preciznije.

Ukoliko postoje veze između tabela, a na osnovu autoincrement polja u jednoj tabeli, morao bi to odraditi, kaskadno, u svim tabelama koje su s istom i povezane. Ako ti treba samo u TDBGrid - u ili nekom izveštaju numeracija to se može odraditi. Svaki report engine može to generisati, a pretragom foruma naićeš na diskusiju gde to možeš odratiti u TDBGrid - u, naravno, to je nova kolona u istom i ne utiče na autoincrement polje, samo numeriše slogove u TDataSet - u.
[ medixsa @ 24.07.2008. 08:38 ] @
Radi se o master/details - master koristi autoinc - polje
konkretno

imam tabelu racuni i stvake racuna

kada izbrisem racun po rb 5 ,ostaje 123467 itd.Zelim da renumerisem (slozim po redoslijedu) komplet racune od 1 do ....

hvala ti na pokusaju da mi odgovoris na pitanje ,molim te ako si u mogucnosti da mi odgovris sa source primjerom ili sl.

Hvala jos jednom,vrlo mi je potrebno !!!
[ Miloš Baić @ 24.07.2008. 09:09 ] @
Preko kojeg polja su povezane? Jer, ako su preko autoincrement prve tabele, moraš izmenu koju bi odradio u prvoj tabeli, kaskadno, proslediti i tabeli koja zavisi od te. Ako je razlog samo vizuelne prirode, nisam siguran da je to baš pametno. Ostavio bih tako kako je, a ako želim numeraciju, dodao bih jednu kolonu u TDBGrid i na taj način rešio problem. Dakle, imao bih kolonu redni_broj, ispravnim redosledom, a druga bi bila to autoincrement polje.

Ajde da čujemo još neki, možda, merodavniji odgovor.

BTW, ako se odlučiš na dodavanje polja sa numeracijom u TDBGrid - u, imaš diskusiju o tome na forumu, samo treba pretražiti.
[ savkic @ 24.07.2008. 10:48 ] @
> imam tabelu racuni i stvake racuna
> kada izbrisem racun po rb 5 ,ostaje 123467 itd.Zelim da renumerisem (slozim po redoslijedu) komplet racune od 1 do ....

Uglavnom je greška koristiti primarni ključ tabele (tvoje autoincrement polje) za potrebe korisnika (redni broj fakture), primarni ključ služi za održavanje referencijalnog integriteta i rad sa tabelama. Dakle, dodaj jedno novo polje User_ID ili RedniBroj a postojeće polje preimenuj u ID.
[ priki @ 24.07.2008. 12:15 ] @
Citat:
medixsa: Radi se o master/details - master koristi autoinc - polje
konkretno
imam tabelu racuni i stvake racuna
kada izbrisem racun po rb 5 ,ostaje 123467 itd.Zelim da renumerisem (slozim po redoslijedu) komplet racune od 1 do ....


ako već koristiš za potrebe korisnika,
onda dozvoli korisniku da ukuca broj koji želi a ne autoicrement
ako korisnik ostavi prazno, neka program dodeli prvi slobodan broj pre snimanja
i to je to
[ medixsa @ 24.07.2008. 14:59 ] @
Radi o POS programu ,koji prilikom kreiranja racuna dodajem automatski redni broj racuna i nakon izdavanja racuna ,sve racune i stavke racuna drzim u odvojene tabele koji su povezane sa kljucem primarnim master/details.

Program je dizajniran,tako sto kada korisnik izabere opciju Pregled racuna ,vidi sve racune i zatim njegove stavke i to je
bas lijepo za usersa.

Ja zelim da uradi ako je to moguce sigurno jeste,da korisnik moze da izbrise u bilo koja doba racun ,i da poslije renumerise
racune po rednom broju,rekao sam gore u tekstu.Korisnik bi na ovaj nacin imao tacan izvjestaj i sve kako treba i bio u + (plusu) sa poslom


Naisao sam na jedan program koji je pisan VB gdje u programu je moguce renumeraciju autoinc polja i program malo to sporije odradi ali uglavno sve zavrsi kako treba.

Mozete li mi dati bilo kakav odgvor ,a naravno da je jasno pitanje sto zelim da uradim.

Hvala svim na trudu !!!




[ Miloš Baić @ 24.07.2008. 16:14 ] @
Po meni, najjednostavnija varijanta ti je da imaš broj računa, koji je primarni ključ, ujedno. Ukoliko se neki izbriše, da ne radiš renumeraciju, nego, ukoliko želiš da korisnik ima redne brojeve pored računa u TDBGrid - u (zbog izgleda), pretražiš forum i nađeš temu kako to da odradiš. Mislim da i devExpress ima gotove komponente za to.

Mada, to možeš odraditi, numeraciju, pored broja računa koji je PK, pomoću SQL upita. Ima na forumu za baze, mozgalica o tome.
[ savkic @ 24.07.2008. 16:24 ] @
Moj ti je savet da redizajniraš tabelu tako da ima ID (primarni ključ) tipa INTEGER i user_ID tipa VARCHAR. Druga stvar renumaraciju koju si ti zamislio ne smeš raditi, ne može danas faktura 3 biti na Peru Perića a sutra na Miku Mikica.
Ako bez obzira na sve to želiš onda kreneš redom, prvo moraš promeniti taj broj u svim zavisnim tabelama pa potom i u glavnoj. Najjednostavnije je da sortiraš tabelu po broju, napraviš dodatni brojač od 1 pa na dalje i ako postoji neslaganje u lokalnom brojaču i IDu tabele prvo promeniš sve slogove u zavisnim tabelama na novi pa potom i u glavnoj tabeli i onda pređeš na novi slog i uvećaš lokalni brojač.
[ juha5803 @ 24.07.2008. 19:11 ] @
A zašto korisniku dozvoliti brisanje računa, pa krpiti nastale rupe. Jesi siguran da je to legalno (mislim da ne budeš imao problema ako te neki inspektor zakači po tom pitanju)
[ medixsa @ 24.07.2008. 19:24 ] @
e drug vrlo dobro znam da nije legalno, vjeruj da niti ijedan sitini gazada ne zeli bas da je software legaln ,svi zele da manipulisu u svoju korist ili inace ne kupuju programe ako ne moze da krade ,jer ako bi prikaziovao sve drzavi njega nebih bilo na mapi.Licno nebih ponudio takav program ali me interesuje ukoliko bi bas bilo potrebe za tako nesto
[ juha5803 @ 24.07.2008. 21:23 ] @
Znam ja to, svi imamo isti problem. Najlakše ti je neko od navedenih rješenja, u krajnoj liniji možeš to na mnogo načina, samo izbjegni autoincrement. Ja sam skoro prepisivao podatke iz jedne baze koja je imala taj sistem povezivanja master/detail a morao samo prenumerisati pa sam to nekako odradio, ali nisam sam bio zadovoljan načinom, jer je autoincrement prilično tvrdoglav
[ medixsa @ 24.07.2008. 22:16 ] @
Presao sam da koristim prije par mjeseci FireBird i ide sve ok.POS program o kome sam govorio ra di sa DBF-om tako da je i dalje u funkciji pa malo dotjerujem neke mogucnosti koji su neophodne ljudima kome odgovara ?.....

Za dobivanje svih podataka i master/details tabela - racuna za izvjestaje - reporte koristio sam SQL ,tako da sam sa SQL
spajao master/details tabele i dobivao kompletan izvjestaj po zelji.....Interesuje me jeli izvodljivo da to uradim sa SQL nisam pokusaova ,tek mi je palo na pamet da pokusao uraditi sa SQL-om.Ali sam ui medjuvremenu skontao da i to bas nije izvodljivo ,recimo na prijemer kao sto ja na slikama...

[ Miloš Baić @ 25.07.2008. 06:30 ] @
Citat:
Interesuje me jeli izvodljivo da to uradim sa SQL nisam pokusaova ,tek mi je palo na pamet da pokusao uraditi sa SQL-om

Sa SQL - om možeš napraviti kolonu u kojoj će biti numeracija slogova, kao što sam već rekao, na forumu za baze ima mozgalica kako to i da izvedeš. I dalje mislim da je najbolja varijatna da ti broj računa ostane broj računa koji je i dobio, a da numerisanu kolonu dobiješ kroz SQL ili u TDBGrid - u da je napraviš.

Koliko sam shvatio, tebi to treba samo zbog vizuelnog prikaza korisniku!?!
[ medixsa @ 25.07.2008. 17:38 ] @
OK, potrebno mi je da mi se u izvjestaju sve slaze kako po kalkulaciji tako po izlazu racunu,nebitno da vas dalje ne tusim
hvala svima koji su pokusali da mi pomognu ,nadam se da cu nekako da rijesim putem SQL

hvala jos jednom.Volio bih, ako bi neko napisao rijesenje neka stavi na forum...