Šta je novo?

VB, baza podataka i promenljiva???

IvanGrozni

Slavan
Učlanjen(a)
04.06.2004
Poruke
59
Poena
309
Kako da u bayu upisem podatak iz promenljive? Naime napravio sam bazu u Accesu, a u VB-u sam napravio formu, sa tasterom za dodavanje zapisa. E sada ne zelim da se podatak upisuje direktno u bazu, vec hocu da to bude indirektno nakon sto korisni potvrdi da zeli da ga unese. U tabeli sam napravio polje koje ima svojstvo AutoNumber, medjutim kada recimo obrisem red koji ima bro 17, prilikom dodavanja novog reda, u autonumber se upisuje broj 18. Sto znaci da imam red sa brojem 16 pa onda red sa br. 18. Kako da ispravim da se ponovo upise br.17, tj. da li ima neko podesavanje u Accesu?
 
Prvo za upis u bazu podataka, neznam u cemu je porblem, jer u ti imas samo formu za upis koja je TEXT upises sta hoces pa onda pozoves metodu UbaciUBazu preko Button-a koji si kako kazes dodao samo mu za Event stavi OnClick pa das poziv metode. Naravno koristi COMMIT i ROLLBACK radi sigurnosti.

Sto se tice AutoNumber u DesignView sigurno si sam ogranicio za AutoNumber na Allow Duplicate NO.

Obajsnjenje za zasto ti posle 16 bez obzira sto si izbrisao 17 on sam prelazi na 18 je to sto na taj nacin cuva integritet baze. Razmisli sta ce se desiti ako si preko tog kljuca vezao neke podatke u drugoj tabeli, a u prvoj izbrise kljuc, pa ga ponovo dodas sa drugim parametrima ili vrednostima. U tom slucaju bi napravio totalni haos u bazi tj narusio integritet baze. NPR ako ti je pod 17 bila osoba sa imenom PERA a njegove ocene si belezio u drugoj tabeli, a nisi u Relationship-u lepo uradio vezu sa tabelam da ti ujedno brise i sva ostala pojavljivanja kljuca 17 u ostalim tabelama, pa na 17 stavis LAZU, onda bih LAZA uzeo PERINE ocene i time narusio integritet. Pravilo je da se kljucevi nebrisu vec samo podaci koji su vezani za neki kljuc, mada ako ga izbrises nece ti dozvoliti da ponovo upotrebis taj kljuc.

Ako ti je to neophodno da ponovo mozes upotrebiti kljuc koji si ozlobodio onda nemoj koristiti AutoNumber vec samo Number, a da to da ti sam dodeljuje kljuceve uradi jednu metodu koja ce da to kontrolise iz VB-a (radi increment +1, a pre toga prebrojava od pocetka do kog broja je zauzeto i onda brojac uvecava za 1), znaci napisi kod, jer sama baza to nece dozvoliti da AutoNumber radi tako.
 
Mozes probati da za AutoNumber stavis Alow Duplicate YES ali nisam siguran kako ce to raditi. Ja kod pisem u C# tako da bazu ne ogranicavam nicim vec sve rucno kontrolisem iz same aplikacije ali ti si najverovatnije krenuo da radis direktno iz ACCESSA, tako da moras probati sa MACRO-om ili VB da odradis takodje rucno.
 
Poslednja izmena:
kako da resim promenljivu?

Ovo u vezi AutoNumbera sam primenio i resio problem. Ali interesuje me kako da u promenljivoj dodam podatak iz tabele. Recimo iz tabele koja ima nekoliko polja (ime, prezime, adres itd.), iz nekog sloga, npr. zadnjeg sloga u tabeli, da u promenljivu dodam vrednost polja "ime". I obrnuto, da u tabeli dodam vrednost u nekom polju iy promenljive?
 
Da je u pitanju C# mogao bih ti precizno reci. Moras koristiti SQL upit, a kako ces ih pokupiti sa forme to neznam kako ide u VB-u, tj cela sintaksa VB-mi je strana. Pogledaj ovo kako u sustini izgleda u C# pa probaj da provalis kako ces to odraditi u VB-u.

UbaciUTabelu(txtUnosStudentID.Text + ",'" + txtUnosIme.Text + "','" + txtUnosPrezime.Text + "','" + txtUnosBrInd.Text + "'");

Ovim se iz forme uzimaju podaci. ono sto je text obavezno mora biti pod 'ime' a ono sto je broj samo g aprosledis tako

Evo i kako izgleda metoda "UbaciUTabelu"

public void UbaciUTabelu(string parametri)
{
string upit = "INSERT INTO Student VALUES(" + parametri + ")";
OleDbCommand komanda = new OleDbCommand(upit, konekcija, transakcija);
komanda.ExecuteNonQuery();
}


S'tim da ako radis VB iz Access-a nekoristis OleDB. Logika je ista samo se sintaksa razlikuje.
 
Poslednja izmena:
Da naravno txtUnosNesto je ustvari TextBox znaci najobicniji TextBox gde zadajes vrednosti. Nadam se da sam ti barem dao ideju kako da razmisljas, posto nisam resio tvoj problem.
 
Vrh Dno