Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

VB Data control i DataReport

[es] :: Visual Basic 6 :: VB Data control i DataReport

[ Pregleda: 2121 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon VB Data control i DataReport17.10.2007. u 18:51 - pre 201 meseci
Pozdrav svima.

Imam sljedeci problem. Koristim MS Data kontrolu i .mdb bazu.

Problem je taj da kad u jednoj funkciji nesto upisem u bazu (Add i Update) i idem odmah u data report znaci:

Code:

   Data1.Recordset.AddNew
   Data1.Recordset(0) = "Bla bla"
   itd.....
   Data1.Recordset.Update
   Data1.Refresh

   DataEnvironment1.rsRacuni.Open
   DataEnvironment1.rsRacuni.MoveLast
   Load DataReport
   DataReport.Show


...desi se to da mi ne prikaze taj zadnji upisani record nego onaj prije njega. Kao da podaci jos nisu upisani u bazu pa mu taj zadnji fali. Ali ako nakon toga pozovem...

Code:

   DataEnvironment1.rsRacuni.Open
   DataEnvironment1.rsRacuni.MoveLast
   Load DataReport
   DataReport.Show

...opet, onda je sve ok i record je tu. Pokusao sam sa timerom, refresho, ovo - ono, nista ne pomaze. Nekad je ok, nekad ne prikaze zeljene podatke. To mi stvara problem jer trebam tocne podatke u reportu jer se na njega oslanjam i po njemu radim tako da mi to mora biti 100% sigurno zadnji zapis.
Ja mislim da bi trebo pozvat neku funkciju koja ce ocistit neki buffer ili cache u kojem je taj zapis, mozda.

E sad, nadam se da ce ovo gore sto sam natraljezgao nekome imati smisla i da ce mi pomoci :p..


Lijep pozdrav.
Danijel

[Ovu poruku je menjao Aleksandar Ružičić dana 19.10.2007. u 01:26 GMT+1]
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: VB Data control i DataReport18.10.2007. u 08:29 - pre 201 meseci
Nakon update-a ponovo izcitaj podatke iz baze odnosno tabele i prikazi ih u dataGridu ili sta vec koristis. Znaci moras ponovo otvoriti recordset.
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: VB Data control i DataReport18.10.2007. u 14:01 - pre 201 meseci
Nisam siguran da razumijem sta bi trebao napravit. Ja napravim Data1.recordset.movelast. U stvari evo taj dio koda:

Code:

    Form6.Data1.Recordset.AddNew
    Form6.Data1.Recordset(0) = CInt(Form6.Text1.Text)
    If Form6.Text2.Text <> 0 Then Form6.Data1.Recordset(4) = Form6.Text2.Text
    Form6.Data1.Recordset(1) = Date
    Form6.Data1.Recordset(2) = Time
    Form6.Data1.Recordset(3) = 1
    
    Form6.Data1.Recordset(5) = CDbl(Form6.Label7.Caption)
    
    Form6.Data1.Recordset.Update
    Form6.Data1.Refresh
    Form6.Data1.Recordset.Close

'znaci ovdje se popuni baza1, updatea se i closa
Code:

    For red = 1 To RedRacuna
        
        Form6.MSFG1.Row = red
        
        Form6.Data2.Recordset.AddNew
        Form6.Data2.Recordset(0) = CInt(Form6.Text1.Text)
        Form6.Data2.Recordset(1) = Date
        Form6.Data2.Recordset(2) = Time
        
        Form6.MSFG1.Col = 0
        Form6.Data2.Recordset(3) = Form6.MSFG1.Text
        Form6.MSFG1.Col = 1
        Form6.Data2.Recordset(7) = Form6.MSFG1.Text
        Form6.MSFG1.Col = 2
        Form6.Data2.Recordset(5) = Form6.MSFG1.Text
        Form6.MSFG1.Col = 3
        Form6.Data2.Recordset(6) = CDbl(Form6.MSFG1.Text)
        
        Form6.Data2.Recordset.Update
        Form6.Data2.Refresh
    
    Next red
    
    Form6.Data2.Recordset.Close


'a ovdje se popuni baza2 i isto tako update i close
Code:
    
    Form6.Data1.DatabaseName = Form6.Data3.Recordset(0)
    Form6.Data1.RecordSource = "Racuni"
    Form6.Data1.Refresh
    Form6.Data1.Recordset.MoveLast
    
    Form6.Data2.DatabaseName = Form6.Data3.Recordset(0)
    Form6.Data2.RecordSource = "ARacun"
    Form6.Data2.Refresh
    Form6.Data2.Recordset.MoveLast

'sad je tu ponovo bezvaze ovaram, ali ovo je nepotrebno
Code:

    Load DataEnvironment1
    DataEnvironment1.rsRacuni.Open
    DataEnvironment1.rsRacuni.MoveLast
    Load DR2
    DR2.Show

'a tu se loada taj DataReport koje je vezan na ove baze.... i ovo ne radi... zasto ne znam


Code:

    Unload Form6
    Load Form4
    Form4.Show




[Ovu poruku je menjao Aleksandar Ružičić dana 19.10.2007. u 01:27 GMT+1]
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: VB Data control i DataReport18.10.2007. u 15:10 - pre 201 meseci
Dio koda (predpostavljam da se nalazi u dogadjaju Form6_Load()) koji cita podatke iz tabele racuni i prikazuje ih u Data1 trebas ponovo pozvati nakon update-a ili insert-a. Sta se desava, ti insertujes novi zapis, on biva upisan u bazu odnosno tabelu, ali Data1 ti drzi podatke od prije inserta. Znaci potrebno je ponovo izcitati podatke u data1.

SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: VB Data control i DataReport18.10.2007. u 17:40 - pre 201 meseci
Taj dio koda se pokrene pritiskom Esc tipke. Al ne kuzim kako da opet izcitam podatke.
Code:

Load DataEnvironment1
DataEnvironment1.rsRacuni.Open
DataEnvironment1.rsRacuni.MoveLast
Load DR2
DR2.Show


To je taj report koje se ucita poslije upisa u bazu. Taj report uzima zadnji zapis. Jednostavno ne znam kako da ga ponovo ucitam kad je ovo prvi puta da ga ucitavam u programu. Ako mi mozes pokazat na nekom primjeru mozda?

[Ovu poruku je menjao Aleksandar Ružičić dana 19.10.2007. u 01:28 GMT+1]
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: VB Data control i DataReport19.10.2007. u 08:22 - pre 201 meseci
Recordset rsRacuni ponovo otvori nakon update-a ili insert-a, pa tek onda ovaj izvjestaj:

Code:

Load DataEnvironment1
DataEnvironment1.rsRacuni.Open
DataEnvironment1.rsRacuni.MoveLast
Load DR2
DR2.Show


Ako ne skontas postavi ovdje sav kod forme 6.

SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: VB Data control i DataReport19.10.2007. u 08:44 - pre 201 meseci
To se desi na Esc tipku. Ovo je iz funkcije u modulu .bas. To je kod koji upise u dvije baze i onda se DR2.show taj report koji trebam printati.

Code:

Select Case Ascii

Case 27

    Form6.Data1.Recordset.AddNew
    Form6.Data1.Recordset(0) = CInt(Form6.Text1.Text)
    If Form6.Text2.Text <> 0 Then Form6.Data1.Recordset(4) = Form6.Text2.Text
    Form6.Data1.Recordset(1) = Date
    Form6.Data1.Recordset(2) = Time
    Form6.Data1.Recordset(3) = 1
    
    
    Form6.Data1.Recordset(5) = CDbl(Form6.Label7.Caption)
    
    Form6.Data1.Recordset.Update
    
   
    
    For red = 1 To RedRacuna
        
        Form6.MSFG1.Row = red
        
        Form6.Data2.Recordset.AddNew
        Form6.Data2.Recordset(0) = CInt(Form6.Text1.Text)
        Form6.Data2.Recordset(1) = Date
        Form6.Data2.Recordset(2) = Time
        
        Form6.MSFG1.Col = 0
        Form6.Data2.Recordset(3) = Form6.MSFG1.Text
        Form6.MSFG1.Col = 1
        Form6.Data2.Recordset(7) = Form6.MSFG1.Text
        Form6.MSFG1.Col = 2
        Form6.Data2.Recordset(5) = Form6.MSFG1.Text
        Form6.MSFG1.Col = 3
        Form6.Data2.Recordset(6) = CDbl(Form6.MSFG1.Text)
        
        Form6.Data2.Recordset.Update
        
    Next red
    

    Load DataEnvironment1
    DataEnvironment1.rsRacuni.Open
    
    DataEnvironment1.rsRacuni.MoveLast

    DR2.Show
    
 
    
    
    Unload Form6
    Load Form4
    Form4.Show
    

End Select



Kad pozovemo ovo, jednom od 10 puta mi prikaze tocan, zadnji record, a u ostalim slucajevima mi pokazuje predzadnji. Znaci je ovdje napravim racun 130 a on mi pokaze racun 129.

Savjetujes mi da ponovo otvorim rsRacuni nakon Updatea, a ja to i radim. Pogledaj ovaj dio koda molim te:

Code:

    Form6.Data2.Recordset.Update
    Next red
    Load DataEnvironment1
    DataEnvironment1.rsRacuni.Open
    DataEnvironment1.rsRacuni.MoveLast
    DR2.Show


Prvo ide Data1.recordset.update i Data2.recordset.update i onda ide Load DataEnvironment1 i rsRacuni.Open. Tako da ne razumijem tvoj savjet kad ja tocno to i radim.. :p. A ta Form6.Data1 i Form6.Data2 otvaraju istu tabelu iz baze kao i DataEnvironment1, sto znaci da kada promijenim nesto u Form6.Data1 ili Form6.Data2 to se mijenja i u DataEnvironment1(jel tako?). Ocito je da nekad radi a nekad ne a ja ne znam kako da refersham taj DataEnvironment1. Ne znam kako da drugacije to objesnim.

[Ovu poruku je menjao Aleksandar Ružičić dana 21.10.2007. u 17:43 GMT+1]
 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: VB Data control i DataReport21.10.2007. u 16:34 - pre 201 meseci
Hmm. Sljedeci problem :p

Isao sam prepravljat kod bez DataEnviromenta. Dakle punit DataReport rucno, i naravno naletio na problem.


Desava se to da kreiram rsParent recordset sa child recordestom.
Kolko sam uspio skuzit citajuci na netu to se dobije ovim sqlstingom dolje. Dakle postoje dvije tablice u bazi. Racuni i ARacun. U Racuni su polja BrRacina, Datum, Vrijeme, Cijena i jos neki a u ARacun tablici su polja PoRac, ADatum, AVrijeme, ACijena, AKolicina itd...
Ako sam dobro skuzio child recordset je u parent recordsetu kao polje pa ga treba:
Code:

Set rsChild = rsParent.Fields("ARacun").Value

valjda. I to sve prolazi. I u DataReportu imam 6 sekcija i to prolazi. Ali nakon DataReport.show pise Error da DataField"PoRac" nije pronaden. Kako nije pronaden ako mu je ime povukao i provjerio sam da ima data u tim poljima pomocu
Code:

'Text7.Text = rsChild.Fields(1).Value


Ne znam kako da prijavim DataReportu da postoji i rsChild recordset. Brijem da bi
Code:

DataReport3.DataMember = rsParent.DataMember


trebalo odradit taj posao.

Dakle evo cijeli kod u Command_Click, molim pomoc ako nekom ovo ima bilo kakvog smisla..
HVALA.




Code:

Dim strSQLUpit As String
Dim conVeza As ADODB.Connection
Dim rsParent As ADODB.Recordset, rsChild As ADODB.Recordset

'Izvor podataka koji se koristi u DataReportu
Set conVeza = New ADODB.Connection

strSQLUpit = "SHAPE {SELECT Racuni.* FROM Racuni WHERE BrRacuna =" &
Text7.Text & "} APPEND ({SELECT ARacun.* FROM ARacun ORDER BY PoRac} AS ARacun RELATE BrRacuna TO PoRac)"

conVeza.ConnectionString = "Data Source=C:\Servis\Racuni.mdb;Provider = MSDataShape;Data Provider = Microsoft.Jet.OLEDB.4.0;"
conVeza.Open

Set rsParent = conVeza.Execute(strSQLUpit)

'Povezuje se izvestaj sa izvorom podataka
Set DataReport3.DataSource = rsParent

Set rsChild = rsParent.Fields("ARacun").Value

DataReport3.DataMember = rsParent.DataMember

'Vrsi se prikazivanje vrednosti polja u kontrole izvestaja(dataReporta)
DataReport3.Sections("Section1").Controls.Item("Text1").DataField = rsParent.Fields(0).Name
DataReport3.Sections("Section1").Controls.Item("Text2").DataField = rsParent.Fields(1).Name
DataReport3.Sections("Section1").Controls.Item("Text3").DataField = rsParent.Fields(2).Name

DataReport3.Sections("Section6").Controls.Item("Text5").DataField = rsChild.Fields(0).Name  ' OVO OVDJE NE VALJA :-O


DataReport3.WindowState = vbMaximized

'Fizicki prikazujemo izvestaj
'Text7.Text = rsChild.Fields(1).Value

DataReport3.Show

'Ponistavamo objekte
Set rsParent = Nothing
Set conVeza = Nothing
Set rsChild = Nothing


Hvala unaprijed
Danijel

[Ovu poruku je menjao DankoH dana 21.10.2007. u 19:53 GMT+1]
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: VB Data control i DataReport21.10.2007. u 16:45 - pre 201 meseci
Danijele zamolio bih te da se naviknes da koristis code tagove kada postujes neki kod.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: VB Data control i DataReport22.10.2007. u 07:34 - pre 201 meseci
Hajde da se vratimo predhodnom problemu, jer mislim da ce ovo pomoci. Znaci ponovo otvaramo rekordset (nakon update-a)

Code:

Set rsParent = New ADODB.Recordset

strSQLUpit = "SELECT * FROM Racuni"

Set rsParent = conVeza.Execute(strSQLUpit)


Zatim izvjestaj:

Code:

Load DataEnvironment1
DataEnvironment1.rsRacuni.Open
DataEnvironment1.rsRacuni.MoveLast
Load DR2
DR2.Show

SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: VB Data control i DataReport23.10.2007. u 08:41 - pre 201 meseci
To bi i stimalo, ali ja imam child tablicu nakacenu na rsRacuni. Znaci ako napravim to onda ce mi se prikazat samo BrRacuna, Datum i Vrijeme a ne i stavke iz tog racuna koje su upisane u ARacun tabelu. Ne znam kako iz koda nakacit child tabelu na datareport.
 
Odgovor na temu

dava
Banja Luka

Član broj: 27208
Poruke: 893



+384 Profil

icon Re: VB Data control i DataReport24.10.2007. u 13:44 - pre 201 meseci
To ti je rjesenje pa ti vidi kako ces ;)
Na koji si nacin zakacio child tabelu na datareport?
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
 
Odgovor na temu

DankoH
Danijel Skok

Član broj: 55253
Poruke: 80
*.adsl.net.t-com.hr.



+1 Profil

icon Re: VB Data control i DataReport28.10.2007. u 12:22 - pre 200 meseci
Ne znam kako da nakacim child tabelu na report. Kako se to napravi?

Ovako?

Code:


Dim strSQLUpit As String
Dim conVeza As ADODB.connection
Dim rsParent As ADODB.Recordset, rsChild As ADODB.Recordset

Set conVeza = New ADODB.connection

strSQLUpit = "SHAPE {SELECT Racuni.* FROM Racuni WHERE BrRacuna =" & Br - 1 & "} APPEND ({SELECT ARacun.* FROM ARacun ORDER BY PoRac} AS ARacun RELATE BrRacuna TO PoRac)"

conVeza.ConnectionString = "Data Source=C:\Servis\Racuni.mdb;Provider = MSDataShape;Data Provider = Microsoft.Jet.OLEDB.4.0;"
conVeza.Open

Set rsParent = conVeza.Execute(strSQLUpit)
Set rsChild = rsParent.Fields(6).Value

Set DataReport3.DataSource = rsParent
DataReport3.DataMember = rsParent.DataMember


Ovo radi. Imam i rsParent i rsChild. Sva polja su popunjena i svi podaci su tocni! Ali kad idem punit DataReport javlja mi error da ne moze pronaci polja koja su upisana u rsChild.
Kako da sad jos zakacim taj drugi recordset? On je u rsParent pod poljem 6..... rsParent.fields(6).value = rsChild recordset.


Code:

DataReport3.Sections("Section1").Controls.Item("Text1").DataField = rsParent.Fields(0).Name
DataReport3.Sections("Section1").Controls.Item("Text2").DataField = rsParent.Fields(1).Name
DataReport3.Sections("Section1").Controls.Item("Text3").DataField = rsParent.Fields(2).Name
DataReport3.Sections("Section1").Controls.Item("Text4").DataField = rsChild.Fields(1).Name   '''''''''''''OVO NE RADI, NEMA TOG POLJA



Pa zar je moguce da ovo niko ne razumije??? Jel ja grijesim u opisu ili sta? Ne kuzim, pa to bi trebalo biti full jednostavno nekome ko sa time radi. Dal se ljudima ne da citati?!
 
Odgovor na temu

[es] :: Visual Basic 6 :: VB Data control i DataReport

[ Pregleda: 2121 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.