[ anakin14 @ 07.05.2011. 11:12 ] @
do sad sam radio sa access bazom, i hteo sam da napravim manju aplikaciju i malo eksperimentisem sa malom SDF bazom.

isao sam na add new datasource

izabrao Database

pa Dataset

napravio tabele, postavio relacije.

Samo mi jedno nije jasno.

Da li u kodu opet moram da formiram konekcije, recordset-e, datasete, adaptere ili sve ovo imam kao objekte sa obzirom da sam ih formirao u samom projektu?

Nikako ne mogu da nadjem objekte ove baze koju sam formirao, reko da ne pokusavam sa konekcijom dok se ne posavetujem ovde?

puno hvala!
[ dejanet @ 08.05.2011. 11:55 ] @
Moze biti da je pod nekim error-rom ili pod drugacijim namespace-om pa zato ne mozes da dobijes tableadapter,datatable iz tvog dataset..
[ anakin14 @ 10.05.2011. 12:55 ] @
mozes li mi dati prost primer - ako zamislimo da smo kreirali Dataset preko wizarda, i da u projektu imamo fajl 1.sdf kako iz koda manipulisati objektima koji sadrze te podatke?

Ili moramo u kodu deklarisati nov dataset pa ka povezati sa ovim?

Hvala puno!
[ dejanet @ 10.05.2011. 14:00 ] @
Na vrhu koda proveri keyword:

namespace tvoj_projekat

postoji svuda, ako dodas folder onda tvoj_projekat.tvoj_folder, i da ga tako prozivas(npr. ako je tvoj DataSet u folderu)

Neki put ne mozes da dobijes code completition za db objekte(dole) ako nije uradjen rebuild projekta, a build moze da omane ako postoji greska u npr. DataSet.Designer.cs

Evo dva slucaja kada je sve OK:
1. kada navlacis datasource-eve na form
2. kada radis sa nekom prostom klasom koja moze da ti bude business logika

1. slucaj: imas na formu tvoj_DataSet(ref. Tvoj_DataSet), tvojatabelaBindingSource, tvojatabelaTableAdapter. Ovo se najcesce kreira automatski kada biras DataSource za neku kontrolu u WinForm aplikaciji.

NPR. Inicijalizacija podataka
private void tvojForm_Load(object sender, EventArgs e)
{
//init data
this.tvojatabelaTableAdapter.Fill(this.tvoj_DataSet.tvojatabela);
}

NPR. Snimanje podataka
private void save()
{
//update client data
try
{
tvojatabelaBindingSource.EndEdit();

}
catch (System.Exception err)
{
MessageBox.Show(err.ToString());
tvojatabelaBindingSource.CancelEdit();
return;
}
//commit to db
try
{
tvojatabelaTableAdapter.Update(tvoj_DataSet.tvojatabela);
}
catch (System.Data.SqlClient.SqlException err)
{
MessageBox.Show(err.ToString());
return;
}
tvoj_DataSet.AcceptChanges();
}

2. slucaj u nekoj klasi(ne klasi koja je uz Form)

NPR. citanje podataka
//tableadapter
Tvoj_DataSetTableAdapters.tvojatabelaTableAdapter tvojatabelaTA=new Tvoj_DataSetTableAdapters.tvojatabelaTableAdapter();
//datatable dobijanje kolekcije rezultata
Tvoj_DataSet.tvojatabelaDataTable tvojatabelaDT=tvojatabelaTA.GetData();//daj sve podatke, default select query
//kretanje kroz kolekciju rezultata
foreach (Tvoj_DataSet.tvojatabelaRow tvojRow in tvojatabelaDT)
{
int id=tvojRow.id;
string ime=tvojRow.ime;
//i tako dalje u zavsnosti koja polja si definisao u original tabeli
}

Inace rad sa bazama moze na mnogo nacina i zavisi od afiniteta, naredjenja, verzije net framework-a i/ili od nekog ne MS (3rd party) framework-a.
Ovo gore vazi za minimum .net 2.0..
[ anakin14 @ 11.05.2011. 17:03 ] @
hvala puno, pomoglo mi je, ono sto sam trebao da uradim je da prevucem dataset na formu, ja sam mislio da samim kreiranjem baze da ce se kreirati i objekti.

Da ne otvaram novu temu jos jedno pitanje, kada sam radio sa access bazom , radio sam preko recordset-a query ako mi treba neka vrednost.

da li postoji jednostavniji nacin da ako imam tabelu sa kolonom sifra i naziv, da dobijem naziv po datoj sifri k a da ne radim recordset i query select where.

znaci meni treba vrednost u drugoj koloni koja odgovara vrednosti recimo 112 u prvoj koloni.
nesto u fazonu dataset1.tabela1.vrativrednost(kolona1,vrednost,kolona2)

pretpostavljam da ima ali ne mogu nikako da nadjem.

puno hvala
[ dejanet @ 11.05.2011. 18:08 ] @
U Solution Explorer-u otvori Tvoj_DataSet, nadji tvojutabelu, righ click, add query, Use SQL statements, izaberi SELECT which return single value, otkucaj query NPR.:

select naziv
from tvojatabela
where (sifra=@sifra_parametar)

kazes da ti se funkcija zove NPR. getNazivBySifra i to je sta treba u DatSetu.

Kod tebe u klasi:

Tvoj_DataSetTableAdapters.tvojatabelaTableAdapter tvojatabelaTA=new Tvoj_DataSetTableAdapters.tvojatabelaTableAdapter();
string naziv= tvojatabelaTA.getNazivBySifra(sifra);//sifru kupis od nekud npr. parametar ili iz win kontrole

U selektu treba samo naziv
[Ovu poruku je menjao dejanet dana 12.05.2011. u 09:14 GMT+1]

[Ovu poruku je menjao dejanet dana 12.05.2011. u 09:15 GMT+1]
[ anakin14 @ 11.05.2011. 23:32 ] @
to je to, prosto da prostije ne moze biti/

Hvala puno!
[ sakky777 @ 13.04.2012. 22:10 ] @
Vidim da si napisao da si radio sa access bazom, a to je upravo ono sto meni treba pa ako ti nije problem da pokusas da mi pomognes. Naime, pokusavam u povezem c++ sa bazom podataka koristeci Visual studio 2010. Napravim bazu u acces-u, kliknem add new data source i u prozoru za odabir mi se ne pojavljuje nijedan tip baze podataka. Gledao sam ogroman broj tutorial-a i sve mi se cini lako ali jednostavno nemam da izaberm database kao sto svi ostali imaju vec mi se pojavi sledece:
http://imageshack.us/f/820/studioz.png/ (moj screenshot). Zna li neko ocemu se radi i hvala unaprijed.
[ pl4stik @ 14.04.2012. 08:54 ] @
Mnogo bolje odgovore bi dobio u podforumu za C++ ali
http://msdn.microsoft.com/en-us/vstudio/cc896546