[ miki987 @ 16.09.2009. 14:54 ] @
cao i pozdrav svima, imam sledece (pitanje i misljenje):

Code:
Private Sub Command_Click()
Const strConnection As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Home\Desktop\as\konacna\baza.mdb;Persist Security Info=False"

Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command

cnn.ConnectionString = strConnection
cnn.Open

cmd.ActiveConnection = cnn
cmd.CommandText = "create table BAZA1 (a varchar(10), b varchar)"

cmd.Execute
cnn.Close

End Sub


i zelim da umesto ovog create table BAZA1 stoji upisi_novu_bazu.text odnosno textbox u kome definisem kako ce se ta baza zvati

sledeca stvar je sto ne znam da li sam napravio pravu koncepciju programcica kojeg radim

radim zadatak da napravim programcic za stampanje izvestaja.najpre sam to radio sa vb6 + excel-om ali sam odustao zato sto smatram da je sa access-om lakse i bolje

napravio sam dva listview-a.u jedan unosim podatke po datumu a drugi mi sluzi da pojedinacno za te row-ove upisujem detalje.
kada kliknem na row-a iz listview1 a kojeg predhodno ponadjem po datumu u listview2 se prikazu detalji sta je za taj dan radjeno odnosno upisano
listview1 poreed datuma ima jos kolona koje su znacajnije od ovih te sam ih izdvojio kako bi korisnik i bez klika na row iste mogao videti
javlja se problem, sta kada se dan zavrsi i krene drugi!? onda sam probao sa dodavanjem ovog koda gde bi korisnik svaki novi dan zapoceo sa novom tabelom
e sad, uvek praviti novu tabelu a uneti svega 5 kolona za svaki dan, mesecno 30 tabela za access bazu je opterecenje ali sta cu, kad ne znam drugacije
sledeca stvar, i kada uspem (nadam se da ce mi neko pomoci) sta cu sa pozivanjem svake te nove tabele koju kreiram,kako definistali poziv u listview1 i 2...!?
sve u svemu nekako mislim da to nije najbolje resenje a ako mi neko moze pomoci doboosla bi mi pomoc
[ captPicard @ 16.09.2009. 16:27 ] @
Dovoljna ti je jedna tablica u bazi sa poljem datum i ostalim poljima koje ti trebaju. Ako probaš "slikovito" objasniti problem, možda ti mogu više pomoći.
[ miki987 @ 16.09.2009. 16:56 ] @
ako je tako, kako cu pod jednim datumom (danom) ubaciti recimo vise stvari koje isto zelim prikazati u listview-u

evo da probam ovako
ovo je listview1 i on ovo vuce iz tabela1

datum | broj izvoda | stanje kom.banka | volks banka |
21.09.2009 R-00021 55555.00 555.00
22.09.2009 R-00021 55555.00 555.00

a desno od ovoga
listview2 koji vuce podatke iz tabela2 prikazuje kada kliknemo na oderedjeni datum (row iz listview1)
recimo da kliknem na 21.09.2009 on trreba prikazati sledece

uplatilac | firma1 | firma2 | kom.banka | volks banka |
neko blabla1 blabla2 55555.00 555.00
neko blabla1 blabla2 55555.00 555.00
neko blabla1 blabla2 55555.00 555.00
neko blabla1 blabla2 55555.00 555.00
neko blabla1 blabla2 55555.00 555.00
neko blabla1 blabla2 55555.00 555.00

e sad, kada na svakog kliknem iz listview2 imam textbox-ve gde ima jos detalja, tipa tek.racun, br.tel i t.d.

uspeo sam povezati sve to, i radi, imam problem samo prilikom kreiranja tabela u okviru te jedne baze
odnosno,svaka nova tabela se moze kreirati i na osnovu sis.datuma a da korisnik ne mora da se bakce sa unosom imena tabele, pa da li je uneo istu pa se jedna sa drugom kosi pa koji je broj bese na redu i t.d.
e meni je problem kako da namestim da on sam kreira bazu odnosno recimo cita sis.datum na osnovu onog koda gore.ili imas prakticnije resenje?
[ captPicard @ 16.09.2009. 17:40 ] @
Odabrao si sasvim krivi pristup.

Kao prvo, nauči razliku između izraza "baza" i izraza "tablica".

Za to šta tebi treba (koliko sam uspio shvatiti), moraš napraviti dvije tablice, i pomoću njih možeš lijepo vuži sve podatke. I ne razumijem čemu listview kada imaš tako lijepu komponentu koja se zove dbgrid.

Kako ovo nije tema za baze podataka neču offtopičariti, postavi pitanje u forumu Access, i probaj još malo detaljnije obrazložiti problem. Objasni točno koji su ulazi, koji su izlazi i koji ti je cilj.

p.s. opet se zaletavaš u neko područje i želiš na silu napraviti neki program zbrda zdola, a ne znaš osnove. Opet ti ponavljam, kreni od nule, pa ćeš postepeno doći do rješenja. Za ovo šta treba moraš prvo naučiti OSNOVE baza podataka.
[ miki987 @ 18.09.2009. 14:12 ] @
sticem utisak da me proganjas, ne razumem zasto uvek kada se javim sa novom temom!? mozda ti mrsko da citas...ako mi ne zelis pomoci bar druge ucesnike ne teraj od "mene"
[ captPicard @ 18.09.2009. 16:45 ] @
Ne proganjam te, nego ti pokušavam objasniti kako češ nešto ispravno naučiti.

Ali ako ti misliš drukčije, ok...
[ miki987 @ 18.09.2009. 17:26 ] @
ne mislim, meni su dobrodosli saveti...ali radi se o tome da ja zelim uciti polakop, sada sam naucio raditi sa bazom i listview-om, kada to znaje upotpunim prelazim na sledece.iako je mozda ovo sto radim tezi nacin (probao sa dbgridom nemam pojma) polako ucim, a kada uzmem u obzir da pre samo dva mes nisam znao napraviti ni hello word prezadovoljan sam tempom. u medjuvremenu sam "resio" problem tako sto cu koristiti jedanupis i svaki put kada zapocnem drugi brisati drugi jer punjenje baze mi nije resenje ali kada sve to proradi i uvidim greske ispravicu ih ukoliko je mogu ce ako ne idemo na novo poglavlje.tebi stvarno hvala ali ja sam od onih ljudi koji ne voli kada neko vice ili zeli da nametne misljenje.takodje u mom (nekom drugom poslu) ne volim da mi neko prica sta da radim jer smatram da svoj posao radim dobro

e sada, da krenemo iz pocetka:

ako imam zadatak da unosim podatke u bazu, iste cuvam i u svakom trenutku su mi na dohvat ruke pretragom po recimo datumu,ako sam te dobro shvatio za to je najbolji dbgrid.naime radi se o dnevnom izvestaju dogadjanja u kojem se klasicno unose podaci.moj problem je sto svaki row a koji sadrzi najosnovnije podatke radi razlikovanja od drugih (a to su datum, banka i br.izvoda) treba na klik da otvori kao neki pod meni a u ovom slucaju listview u kojem se nalaze puno podataka a koji su unoseni tog dana
kada kliknem na drugi row on treba da mi prikaze sta je radjeno tog dana i sve tako redom
podaci se kreiraju jednostavnim unosom podataka preko text polja i isti se takodje mogu izmeniti
problem je sto nisam imao resenje da svaki datum odnosno svaki dan zapocnem sa novom bazom
[ captPicard @ 18.09.2009. 17:44 ] @
Citat:
miki987
e sada, da krenemo iz pocetka:

ako imam zadatak da unosim podatke u bazu, iste cuvam i u svakom trenutku su mi na dohvat ruke pretragom po recimo datumu,ako sam te dobro shvatio za to je najbolji dbgrid.naime radi se o dnevnom izvestaju dogadjanja u kojem se klasicno unose podaci.moj problem je sto svaki row a koji sadrzi najosnovnije podatke radi razlikovanja od drugih (a to su datum, banka i br.izvoda) treba na klik da otvori kao neki pod meni a u ovom slucaju listview u kojem se nalaze puno podataka a koji su unoseni tog dana
kada kliknem na drugi row on treba da mi prikaze sta je radjeno tog dana i sve tako redom
podaci se kreiraju jednostavnim unosom podataka preko text polja i isti se takodje mogu izmeniti
problem je sto nisam imao resenje da svaki datum odnosno svaki dan zapocnem sa novom bazom


Gledaj ovako, možeš ti učiti raditi sa listview-om, ali to ti je višak posla, jer ti list view moraš sam puniti redak po redak, dok ti sa gridom to nije potrebno. Kada radiš sa gridom, napišeš sql upit, kažeš gridu da mu je datasource taj tvoj upit i on sam prikaže sve podatke u gridu.

Što se tiče toga da svaki zapis mora biti jedinstven, zabavi se malo sa osnovama baza podataka, nauči prve tri normalne forme za početak, tj. nauči dovesti bazu u 3NF.
Evo primjera:

tablica1
----------
broj_racuna
datum
kupac_naziv
kupac_adresa
kupac_grad
sifra_artikla
naziv_artikla
cijena

npr. ova tabela ti nije niti u 1NF, bokje rečeno, niti jedan podatak neče jednoznačno označavati redak u tablici. Ako npr jedan račun ima 5 stavaka, tebi će tablica izgledati ovako:

tablica1
---------
00001 20.09.2009 Test d.o.o. Zagrebacka 5 Zagreb 555 Artikal1 100,00
00001 20.09.2009 Test d.o.o. Zagrebacka 5 Zagreb 256 Artikal2 500,00
itd...

da bi izbjegao to, moraš od te jedne tablice napraviti još nekoliko tablica, npr.

tblRacuni
--------
broj_racuna PK
datum
sifra_kupca FK

tblKupci
------
sifra_kupca PK
naziv
adresa
sifra_grada FK

tblGradovi
--------
sifra_grada PK
naziv
postanski_broj

tblStavkeRacuna
-------------
broj_racuna PK
redni_broj PK
sifra_artikla FK
kolicina

tblArtikli
---------
sifra_artikla PK
naziv
cijena

Na taj način ti lako napraviš jedan upit za jedan dbgrid, npr:
Code:

select * from tblRacuni


a u drugom dbgrid-u napravis ovakav upit
Code:

select * from tblRacuniStavke where broj_racuna = :broj_racuna


s time da ti je :broj_racuna parametar koji vučeš iz prvog upita.

Na taj načuin će ti se u drugom gridu prikazivati podaci samo za taj tvoj određeni račun koji si izabrao.

p.s. ovo je sve pojednostavljeno, dalo bi se još tu puno toga razraditi...

Evo ti malo linkova:

http://en.wikipedia.org/wiki/Database_normalization

http://www.vb6.us/tutorials/in...-sql-structured-query-language

http://www.freevbcode.com/ShowCode.asp?ID=3518

http://www.timesheetsmts.com/adotutorial.htm

To ti je sasvim dovoljno da pohvataš osnove.

I naravno, nemoj ovo preskočiti:

http://www.elitesecurity.org/t...ogramiranja-Baza-Znanja-slicno

Evo imaš i ovdje na forumu:

http://www.elitesecurity.org/t...tura-tutoriali-korisni-linkovi

http://www.elitesecurity.org/t35187

[Ovu poruku je menjao captPicard dana 18.09.2009. u 19:01 GMT+1]

[Ovu poruku je menjao captPicard dana 18.09.2009. u 19:05 GMT+1]
[ miki987 @ 22.09.2009. 11:42 ] @
captPicard da ne bude da nisam probao, dakle jesam ali nisam mnogo odmakao pa sam seo,razmislio i nasao resenje sa ne tako dugackim kodom a da je isti funkcionalan

imam dva listview-a
u jednom (listview1) se nalaze 4 kolone (datum | stanje banke1 | stanje banke2 | komentar)

korisnik unosi te podatke preko text polja i tako zapocinje radni izvestaj

listview2 se aktivira nakon kreiranja ovog listview2 (klasika False u True)

e taj listview2 sada sluzi da se takodje unose podaci u sl.tabele (datum | upaltilac | firma1 | firma2 | banka1 | banka2 )

sve savrseno funkcionise a podaci sa listview1 se unose u access tabelu "baza" dok podaci koji se unose u listview2 u access tabelu "uplatioci"

problem je samo sto ne znam kako da izvedem da sada kada imam sve radne dane u listview1 pod datumima, kada kliknem na row pod datumom 22.09.2009 da mi u listview2 izlista sve ono sto je upisano u access=(tabel:uplatioci) u access-u pod datumom "22.09.2009"

mislim da bi u ovom kodu pod "datum" moglo uneti kod koji kaze prikazi sve pod "22.09.2009" ali ne znam kako bi to izgledalo!?
kod je sledeci:

Code:
Sub popuni_listbox1()
Dim sql As String
openconn
sql = "SELECT * FROM baza ORDER BY datum DESC;"
Set rs = conn.Execute(sql)
If rs.EOF Then
MsgBox "U bazi ne postoji ni jedan zapis!", vbExclamation, "Access"
closeconn
Exit Sub
End If
ListView1.ListItems.Clear
Do Until rs.EOF
ListView1.ListItems.add 1, , rs("redni_broj")
ListView1.ListItems(1).SubItems(1) = rs("datum")' mislim da bi ovde moglo uneti famozni kod koji bi nasao sve pod "22.09.2009"
ListView1.ListItems(1).SubItems(2) = rs("stanje_komercijalna")
ListView1.ListItems(1).SubItems(3) = rs("stanje_volks")
rs.MoveNext
Loop
closeconn
End Sub
[ captPicard @ 22.09.2009. 11:48 ] @
Dodaj na listbox OnMouseClick (ili kako se već zove) ovako nešto:

rs.close;
rs.selectsql.text = 'select * from tablica where datum = listbox1.items(i).text'
rs.open

i onda napuniš listobx2

naravno, prije pretvori ovo items(i).text u datum access formata. Pogledaj malo na Access podforumu kako se rade upiti sa datumima.

p.s. nemam ovdje vb, ap ti ne mogu dati točan kod, ali mislim da ćeš skužiti... Ako zapneš, javi pa ti napravim kada mi bude vb u blizini.
[ miki987 @ 22.09.2009. 13:22 ] @
uh...sad sam se bas zbunio
evo ti mog koda pa vidi da li je to dobro i ako nije (a nije) gde je greska

pass na pvt
[ miki987 @ 24.09.2009. 20:25 ] @
captPicard ti se predomislio :D
[ captPicard @ 25.09.2009. 08:15 ] @
nisam jebemu, nego sam zaboravio... :-) sorry, danas popodne ću!
[ captPicard @ 25.09.2009. 17:15 ] @
Evo u prilogu projekta. Pass je isti.
[ miki987 @ 26.09.2009. 12:17 ] @
Code:
sql = "SELECT * FROM uplate_racun WHERE datum = ListView1.Items(i).Text"


je kod koji je resio problem za sve one koje traze da se pretraga klikom na datum u listview2 sortira po datumu

captPicard VELIKO TI HVALA, ovo ne bi napraio ni za jos mesec dana rada
uspeo sam napraviti sve i sada evo testira se programcic, ma "najbolji sam" stvarno ti hvala puno

imam sad jos jedno pitanje u vezi stampe

napravio sam report-e u access-u i nacicu resenje da stampam sve to pojedinacno (posto imam svaki report zasebno za svaku tabelicu)

pitanje je: posto se neki put moze desiti da recimo unos podataka za jedan dan ne popunjava ceo report A4 a ja zelim stedeti papir pokusao sam to napraviti tako da se preko sledeceg koda ovo sve belezi u excel i pri tom vizuelno izvestaj izgledati jos lepse

Code:
Public Sub excel_Click()


On Error Resume Next
Dim aplikacija As excel.Application 'definisanje objekta excell aplikacje
Dim wBook As Workbook 'Definisanje excell dokumenta
Dim wSheet As Worksheet ' Definisanje stranice-sheeta
Dim ime_fajla As String
Dim Izvestaj As String
Dim i As Long



Set aplikacija = CreateObject("Excel.Application") 'Napravi ti excell aplikaciju u pozadini koja radi pod kontrolom VB-a
Set wBook = aplikacija.Workbooks.add("C:\Program Files\Templates\Template.xlsb") 'Ova linija otvara neki Excell template
Set wSheet = aplikacija.Sheets(1)  'Ova linija podesava Focus na prvi sheet excell dokumenta

wSheet.Cells(5, 2).Value = ListView2.SelectedItem

ime_fajla = "C:\Program Files\Templates\" & Format$(Time$, "HH^MM^SS") & ".xls"
wBook.SaveAs (ime_fajla)

aplikacija.Columns("A:AY").EntireColumn.AutoFit
aplikacija.True = True 'Excell je visible
aplikacija.ShowMe 'ShowMe Excell se sada prikaze preko programa
Set wSheet = Nothing
wBook.Close False
Set wBook = Nothing
aplikacija.Quit
Set aplikacija = Nothing
Err.Clear
End Sub


ono sto ne znam je da li je vb toliko pametan :D i moze da prekopira ceo listview i prebaci / exportuje ga u excel, jer ovako kao sto vidis moram za svaki row da pravim putanju u cells (wSheet.Cells(5, 2).Value = ListView2.SelectedItem)
takodje ja row moram da selektujem da bi bio prekoppiran
ne znam kako to da odradim!?
[ captPicard @ 26.09.2009. 12:51 ] @
Nema na čemu.

1. Ne moraš raditi izvještaje u Access-u, ima VB svoj alat za reporte.
Project --> Add Data Report

Rad s njime je prilično jednostavan, probaj, shvatiti ćeš...

2. Kod prebacivanja u Excel ne moraš raditi za svaki red posebno. Napravi ovako nešto (pišem napamet):

For i =0 to listview.items.count-1
For c = o to listview.items(i).subitems.count-1
celija(i, c) = listview.items(i).subitems(c).text
Next
Next

Pročitaj ovo

http://support.microsoft.com/default.aspx?scid=kb;en-us;301982

Evo primjera koda za export listview-a u excel

http://www.osix.net/modules/article/?id=746