[ batasson @ 20.11.2007. 19:32 ] @
Imam problem sa aplikacijom i glasi ovako:

Ako nista nije upisano u textBox-u (recimo da se textBox zove tbBroj), nece nista drugo da mi radi u aplikaciji.

Da malo pojasnim, napravio sam aplikaciju koja je spojena sa Access bazom,u bazi je tabela (neka se zove Kupac) i ima primarni kljuc atribut 'broj' tipa 'number'. tbBroj je bindovan na atribut 'broj'.

U tbBroj se prikazuje podatak 'broj' iz baze kada kliknem na buttonPrikazi, a tbBroj sluzi i za unos podataka u bazu.

Problem je da ako ostavim tbBroj nepopunjen nista drugo ne radi u aplikaciji. Pod tim 'nista drugo' mislim bas na sve,
ne mogu tab da promenim, ne mogu ni kursor da prebacim u drugi textBox, ne radi cak ni 'x' da zatvorim aplikaciju.
Ako upisem bilo sta u tbBroj sto je isog tipa kao atribut 'broj' sve proradi, bez obzira da li taj broj ima u tabeli Kupci.

Da li ima neko predstavu sta bi to moglo biti??
Hvala.
[ toxi_programer @ 20.11.2007. 21:11 ] @
Možeš da proveriš da li je unesen broj, ovako nekako
Code:

int br;
if( !int.TryParse( tbBroj.Text, out br) )
{
//nije valjana vrednost, uradi nešto...
}

[ batasson @ 20.11.2007. 23:03 ] @
Uf.... je li moze malko preciznije posto nisam ja profesionalac.
Mnogo vise sam pocetnik
[ fpedja @ 21.11.2007. 09:44 ] @
Ne znam u cemu si pisao aplikaciju, Toxi ti je dao u c# kako da ispitas da li je u text boxu unet ceo broj. Tebi je problem sto u tbBroj moras uneti ceo broj i nista sem toga ti nece prihvatiti. Evo ti i kako mozes u VB da ispitas da li je uneta dobra vrednost:
Code:

      dim s as integer
      try
        s=CInt(tbBroj.text)
                 ' ako je uspesno ovde uradi sta hoces
      catch e as Exception
         ' ovde radi sta hoces ako nije uneta dobra vrednost
      end try


Nadam se da ti je pomoglo
[ toxi_programer @ 21.11.2007. 11:48 ] @
Upravo tako...

Samo, mislim da je bolje da koristi ono sa if, pa da se proveri može li text il' ne može da se parsira, umesto try-catch bloka.
[ negyxo @ 21.11.2007. 13:55 ] @
@batasson
To ti je problem do Binding-a, verovatno ti je wizard sve uradio u pozadini pa nisi upoznat sa data binding-om. Moras malo pogledati kako to funkcionise. Otvori MSDN i trazi data binding (a tek WPF, citava nauka o DataBinding-u ).

Za tvoj problem pogledaj Binding i property DataSourceUpdateMode, tamo imas tri moguca stanja. Pogledaj sta koji znaci. Konkretno za tvoj problem mozes da stavis Never i neces imati problema ali onda moras rucno da uguras podatke natrag u DataSource. Isto ovo mozes i iz properties window-a da uradis, imas kod DataBindings->Advanced property pa tamo tweak-uj po zelji binding.
[ batasson @ 21.11.2007. 16:55 ] @
Aplikaciju sam pisao u C#. :)

Mislim da se nismo razumeli najbolje jer meni je potrebno da aplikacija radi i ako se tbBroj ostavi prazan.
Ali vise nije ni to problem, nesto sam cackao i proradilo je :). Ali sada, nazalost, imam drugi problem :(.

U pitanju je upit INSERT za komandu1 i za komandu2 sa mnostvom parametara (15-tak njih).
Evo ga kod:
Code:
if (textBoxKartotekaBrojKartona.Text == "")
                {

                    DialogResult dialogUnos = MessageBox.Show("Uneti podatke u tabelu1?", "Unos podataka",
                        MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dialogUnos == DialogResult.Yes)
                    {
                        konekcija.Open();
                        komanda1.ExecuteNonQuery();
                        konekcija.Close();

                        timer.Stop();
                        timer.Start();
                        if (statusStrip1.Items.Count == 0)
                        {
                            statusStrip1.Items.Add("Podaci su uneti u tabelu1");
                        }
                    }
                }
                else
                {
                    DialogResult dialogUnos = MessageBox.Show("Uneti podatke u tabelu1 i tabelu2?", "Unos podataka",
                       MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (dialogUnos == DialogResult.Yes)
                    {
                        konekcija.Open();
                        komanda1.ExecuteNonQuery();
                        komanda2.ExecuteNonQuery();
                        konekcija.Close();

                        timer.Stop();
                        timer.Start();
                        if (statusStrip1.Items.Count == 0)
                        {
                            statusStrip1.Items.Add("Podaci su uneti u obe tabele");
                        }
                    }
                }



Greska koju vraca je "Data type mismatch in criteria expression" i obelezi liniju :

konekcija.Open();
komanda1.ExecuteNonQuery();
konekcija.Close();

Pretpostavljam da to znaci da se tip nekog parametra ne slaze sa tipom podatka u bazi.

Ali ako u textBoxKartotekaBrojKartona upisem nesto, aplikacija smesti podatke u tabelu1 i tabelu2 i nema greske.
Medjutim, ako polje textBoxKartotekaBrojKartona ostavim prazno, javi se greska.

Ovo sam ovako odradio jer mi potrebno da sve podatke iz textBox-ova smesti u tabelu1 i tabelu2,
a u slucaju da se textBoxKartotekaBrojKartona ostavi prazan da podatke smesti samo u tabelu1.

Ne znam zasto nece da upise samo u tabelu1, ako sa istim podacima upisuje u tabelu1 i tabelu2.

Help!

Hvala....
[ sallle @ 21.11.2007. 17:26 ] @
Citat:
Ne znam zasto nece da upise samo u tabelu1, ako sa istim podacima upisuje u tabelu1 i tabelu2.


ne upisuje sa istim podacima. u prvom slucaju pokusava da upise prazan string, i to ne prolazi. u drugom slucaju pokusava konkretan string da upise, i to prolazi...

dalje ti ne mogu pomoci :). mada uvek mozes da u slucaju jedan, kad je textbox prazan, programski dodelis neku vrednost stringu(koja nikad nece biti unesena u textbox) i prosledis bazi -tako ce da proradi.

Ove metode - open(), executeNonQuery(), bacaju izuzetke koje ne bi bilo lose da hvatas ...

[ batasson @ 23.11.2007. 15:57 ] @
Resio sam problem, mozda na malo opsirniji nacin, ali ipak radi.

Na pocetku dogadjaja za button sam stavio uslov textBoxKartotekaBrojKartona.Text == ""

Ako jeste, upit sam napisao bez parametra za broj kartona i da upise samo u tabelu1.

Ako textBoxKartotekaBrojKartona != ""
onda sam u upitu napisao sve parametre ukljucujuci i ovaj textBox i da upisuje u tabelu1 i tabelu2.

Hvala svima na trudu....
pozz