[ WhiteAngelBoy75 @ 05.04.2009. 05:23 ] @
1. Pitanje:

Kada spojim Binding Source preko carobnjaka, baze i forme, carobnjak me pita da li hocu da mi kopira bazu u
direktorijum gde moj program. Da li vam se desavalo kada se odlucite za tu opciju da se ponekad podaci ne upisu u
bazu ???

2. Pitanje:

Radi optimizacije podataka u bazi, nema potrebe da pravim dve kolone, npr. daljina 45 u km i miljama. Bolje je napraviti
samo jednu kontrolu za km, a drugi podatak da se izracuna na osnovu km. Tako na formi bi samo npr. txtDaljinaKm bila
dostupna a pored nje lblDaljinaMi bi automatski prikazivala milje. E sad ja bih napravio klasu sa podatkom daljinaKm i
daljinaMi read-only proracunata. Ali kako da promenjive iz klase povezem sa Bindingovanim txtBox-ovima ???

npr. txtDaljinaKm.Text = Class1.daljinaKm
lblDaljinaMi.Text = Class1.daljinaMi

Pitanje. U kom txtBox dogadjaju ovo povezati da stalno imam prikaz lblDaljina kad god se promeni record set sa
navigatorom ??? Ili postoji li neki nacin da Binding
umesto txtBox-a direktno povezem sa promenjivinjima iz klase ??? pa onda promenjive povezati sa txtBox-
ovima ??? Koliko je to pametno i kako se to radi ???

3. Pitanje:

E ovo je najteze pitanje Binding-a pa vas molim ima li iko da je ovo nekad uradio u vb. net-u. Ima li neko kompletan
kod ??? Kako ubaciti sliku u bazu preko Picturebox, kad na navigatoru pritisnem new i kako prikazati slike iz baze preko
Bindind Source-a zajedno sa ostalim podacima na jednoj formi ???

Unapred hvala !!!


[ bunker @ 07.04.2009. 12:13 ] @
Pokušaj sa kodom koji sam nakačio, trebalo bi da ti pomogne. To je odgovor na pitanje 3, ali ako se malo potrudiš iz toga ćeš moći i 2. da provališ.
[ WhiteAngelBoy75 @ 08.04.2009. 03:21 ] @
Zahvaljujem se gospodinu Bunkeru na kodu c#, ali ja ga bas ne razumem. Ajde pokusacu detaljnije objasniti Pitanje 3 !!!

- downloadujte bazu podataka pubs sa:

http://www.microsoft.com/downl...EBC53A68034&displaylang=en

- ubacite je u vas sql

- pokrenite, VS i napravite novi windows projekat.
- pokrenite carobnjaka Add Data
- napravite konekciju sa bazom i tabelom dbo.pubs.info ( tabela sa slikama )
- pre nego sto prevucete misom podatke na formu, podesite podatke na detail prikaz, i kolonu
logo na picturebox prikaz.
- prevucite podatke na formu i dobili ste... !!!

dobili ste formu sa binding navigatorom i poljima sa kojim mozete pregledati celu tabelu ukljucujuci i slike i to bez
pisanja bilo kakvog koda. VS sve to automatski odradi za vas... ali ???

[att_img]Proba1.jpg[/att_img]

Kako ubacivati ili menjati ili brisati vec postojece slike u bazi, kao sto to radite sa bilo kojim tekstom ???
Pretpostavljam da PictureBox-u treba dodati i dugme Add Picture i tu napisati kod samo za ubacivanje, brisanje ili
menjanje slike na formi... a kod Save dugmeta treba ispisati kod za ubacivanje, brisanje i menjanje slike u bazi.

Zna li neko taj kod u Vb .net ??? zar nikad niko to nije radio ???








-



[Ovu poruku je menjao WhiteAngelBoy75 dana 08.04.2009. u 04:33 GMT+1]

[Ovu poruku je menjao WhiteAngelBoy75 dana 08.04.2009. u 04:37 GMT+1]
[ bunker @ 08.04.2009. 08:06 ] @
Trebalo bi da je lako da se kod koji sam poslao prevede u VB.NET.
http://www.developerfusion.com/tools/convert/csharp-to-vb/

Nemoj da racunas da je VS dizajner pravi "wizard". Mnogo toga neces moci da uradis u njemu, narocito takve "napredne" operacije. Ne mogu ti reci da je nemoguce uraditi to sto hoces, ali jednostavno nemam dovoljno iskustva sa koriscenjem wizard-a u VStudiu. Verovatno i vecina ljudi ovde, pa zato "nikad niko nije radio".

I sam ces shvatiti da ces za mnogo stvari (skoro sve) koje hoces da uradis morati da zasuces rukave i zapetljas po kodu.

Da, kod koji sam ti poslao, ne radi posao koji hoces, vec moze da ti da neke smernice.
[ Marko Medojević @ 08.04.2009. 08:37 ] @
Ako sam dobro razumeo problem rešenje ide ovako:
- ubaci u projekat OpenFileDialog kontrolu
- dodaj u BindingNavigator još jedno dugme
- dupli klik na dugme koje si kreirao i dobićeš click event handler za njega
- ubaci sledeći sadržaj u event:
Code:

openFileDialog1.ShowDialog();
logoPictureBox.ImageLocation = openFileDialog1.FileName;

- kad si sve to uradio pokreni projekat i pomoću kreiranog dugmeta ćeš moći da lociraš slike sa hard diska koje će biti dodate u picturebox
- klikom na save(bindingNavigator) pored teksta snimio si i sliku u bazu
[ perun85 @ 08.04.2009. 10:35 ] @
Mali off:

U gore pomenutom slucaju u bazu ce biti upisana putanja do slike na lokalnom kompjuteru, sto i nije problem ukoliko se radi o aplikaciji koja ce biti koriscenja samo sa te masine.

Posto je vecina aplikacija koje koriste bazu predvidjena za rad u visekorisnickom okruzenju, prethodno resenje nije bas funkcionalno. Jedan od mogucih nacina za prevazilazenje tog problema je kreiranje deljenog foldera na jednom od racunara, i snimanje fajla u njega nakon cega ce nova putanja koja je dostupna svim korisnicima za citanje biti upisana u bazu. (scenario koji se cesto koristi u izradi web aplikacija)
[ Marko Medojević @ 08.04.2009. 12:24 ] @
@perun85:

Koliko znam u dotičnoj bazi se slika čuva kao binarno polje tako da neće biti problema. Problem bi bio da se slika u bazi čuva kao putanja(string) i tada bi bilo potrebe za nekim deljenim folderom,
[ perun85 @ 08.04.2009. 13:12 ] @
Cuvanje slike kao Blob ili Binary polje u bazi je veoma losa praksa, na netu postoji veliki broj clanaka o tome.
[ WhiteAngelBoy75 @ 08.04.2009. 18:27 ] @
Gospodine perun85 nije poenta zaobici bazu podataka. Mnogi se slazu kad pravis sajt da je bolje staviti slike u direktorijum, ali kada pravis sistem, ja bi bio mnogo srecniji da makar slike ljudi budu u bazi. Da se radi o video fajlovima ili muzici, tu bi razmislio. Sta mislis, zar nije bolje da covek zna obadvoje ???

Gospodine bunker, kada je izasao VS 2002-ge i ja sam pisao kod za baze podataka, ali sad to pisanje nije isto. Ukoliko pogledas video fajlove how do I ... vidices da ti strucnjaci uglavnom koriste wizards, cak i ako pricamo o LINQ, oni se konektuju preko wizarda i maksimalno koriste Server database window i sl. Bukvalno i ne ulaze u SQL, sve rade u VS.
Slazem se s tobom c# je definitivno rasiren programski jezik, sigurno ima vise primera za sve, i ja ga donekle razumem delimicno ali nemogu da ga pratim i to ti je. Otkako znam za sebe ja razmisljam u Basic-u !!!

Gospodine Mare bj mozda si ti u pravu ??? Uradio sam kako si rekao ali imam problem PITANJE 1 !!! Program nece apsolutno nista da upise u bazu, dok radi program... sve funkcionise kao da je upisana slika u bazu bez prijavljivanja greske. Naravno pre toga sam morao... izbrisati relaciju izmedju pub_info i publisher. Pa sam onda morao i ponovo napraviti citav program jer adapter i dalje misli da relacija postoji. I na kraju ne mogu da verujem, nece nista da upamti.
Tako da i ja mislim da mozda moze automatski upisati sliku sa picturebox-a jer je picturebox povezan sa bazom.

Mozda da napravim bazu iz VS, da je ne kopira u direktorijum, da sam napisem procedure za INSERT, UPDATE i DELETE u bazi podataka ???

[att_img]Proba2.jpg

Ajmo strucnjaci, ucite, nema odustajanja... resicemo ovo... !!!


[ Marko Medojević @ 08.04.2009. 19:10 ] @
Ja sam skinuo Northwind bazu sa Microsoft sajta i kod mene lepo radi, tačnije uspeo sam da menjam slike u tvom primeru i pamti ih u bazi. Ne moraš pisati SELECT, INSERT, UPDATE i DELTE komande jer ih tipiziran dataset automatski pravi!
Reci mi, nevezano za sliku, da li uspevaš da upišeš u bazu vrednosti iz textbox-eva?
[ perun85 @ 08.04.2009. 21:04 ] @
Razlika u kodu izmedju ta dva nacina cuvanja fajlova je veoma mala.

@mare_bj

CRUD komande ne kreira DataSet nego TableAdapter.

Problem koji imas mogao je nastati iz jednog od sledecih razloga:

1. Radis sa lokalnom kopijom baze koja se nalazi u okviru tvog projekta
2. Nisi pozvao EndEdit() metod BindingSourcea

[ WhiteAngelBoy75 @ 09.04.2009. 06:42 ] @
Prosto neverovatno... !!! Bez ikakvog pisanja koda za pretvaranje i obratno image u byte, Binding navigator sve radi sam.
mare bj u pravu si, on automatski upisuje sliku u binarnom obliku u bazu... !!! Ovo kod mene radi samo pod jednim uslovom, prilikom pravljenja konekcije treba izbeci pravljenje kopije baze u direktorijumu programa. Treba se povezati direktno sa bazom.

Tako da PITANJE 1, stvarno ne znam zasto kod nekih ljudi kad naprave kopije radi a kod nekih ne. EndEdit() jeste pozvan u dogadjaju Save_Item. Resenje je uvek se direktno povezati na bazu. Pokusao sam menjanje provajdera, prilikom konekcije, pokusao sam i omogucavanje cash-a, pa on napravi jos jedan fajl u direktorijumu *.stf ali ne upisuje podatke.

PITANJE 3, hvala ljudi, reseno !!!

I ostalo je PITANJE 2. Pa da ga bolje pojasnim !!!

- Povezao sam se sa tabelom dbo.authors
- Dozvolio sam joj Allow Null u nekim kolonama da mi ne pravi komplikacije
- Iz te tabele sam izvukao 3 polja... id, fname i lname i stavio na formu.
- Na formu sam stavio i labelu Label1

E sad... Napravio sam klasu Gost i u njoj, ID, FirstName, Lastame i FullName Properties... stime da je FullName ReadOnly.
Ono sto ja pitam... kako povezati polja iz klase sa text boxovima... ??? tako da Label1.Text pokazuje puno ime i prezime klijenta kad god pomerim Recordset u Binding nabvigatoru. Vidi Sliku !!!





[ WhiteAngelBoy75 @ 16.04.2009. 13:12 ] @
Otkrio sam delimicno resenje i za PITANJE 2... tako da sada sa ova tri pitanja mozete mnogo posla sa bazama podataka da odradite bez beskonacnog googlovanja!

Code:


Imports WindowsApplication7.Gost
Public Class Form1
    Public g As New Gost

    Private Sub AuthorsBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AuthorsBindingNavigatorSaveItem.Click
        Me.Validate()
        Me.AuthorsBindingSource.EndEdit()
        Me.TableAdapterManager.UpdateAll(Me.PUBSDataSet)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'TODO: This line of code loads data into the 'PUBSDataSet.authors' table. You can move, or remove it, as needed.
        Me.AuthorsTableAdapter.Fill(Me.PUBSDataSet.authors)

    End Sub

    Private Sub Au_fnameTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Au_fnameTextBox.TextChanged
        g.FirstName = Au_fnameTextBox.Text
        Label1.Text = g.FullName

    End Sub

    Private Sub Au_idTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Au_idTextBox.TextChanged
        g.ID = Au_idTextBox.Text
        Label1.Text = g.FullName

    End Sub

    Private Sub Au_lnameTextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Au_lnameTextBox.TextChanged
        g.LastName = Au_lnameTextBox.Text
        Label1.Text = g.FullName

    End Sub
End Class



Ovo je resenje za pitanje 2 ali ja verujem da bi se ovaj kod mogao itekako pojednostaviti. Zna li neko kako napraviti
jedan dogadjaj za sve textboxove na formi ??? Pa sve stvaiti jednom u jedan dogadjaj, ovako se tri puta ponavlja
Label1.Text = g.FullName
Ovo resenje dokazuje da funkcija u klasi Gost takodje radi i da tako nema potrebe praviti vise kolona u bazi nego sto je
potrebno !!!

[att_img]