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

Problem s upisivanjem podataka u bazu

[es] :: Visual Basic 6 :: Problem s upisivanjem podataka u bazu

[ Pregleda: 2638 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zormar

Član broj: 129240
Poruke: 176
*.adsl.sezampro.yu.



Profil

icon Problem s upisivanjem podataka u bazu09.02.2007. u 22:29 - pre 209 meseci
Da li neko moze da mi objasni zasto pri upisivanju podataka u bazu novi zapis se ne dodaje na kraj vec na pocetak baze, i svaki sledeci zapis koji se dodaje upisuje se iza prethodnog, znaci ide redom?
Code:
Private Sub cmdAdd_Click()

    If cmdAdd.Caption = "&Dodaj" Then
        cmdAdd.Caption = "&Ponisti"
        rsRecordSet.AddNew
    
        cmdSave.Enabled = True
                       
         txtDatum.Locked = False
         txt1.Locked = False
         txt2.Locked = False
         txt3.Locked = False
         
         txtDatum.SetFocus
    
    ElseIf cmdAdd.Caption = "&Ponisti" Then
        cmdAdd.Caption = "&Dodaj"
        cmdSave.Enabled = False
                
         txtDatum.Locked = True
         txt1.Locked = True
         txt2.Locked = True
         txt3.Locked = True
         
 End If
End Sub

Private Sub cmdSave_Click()
    
       rsRecordSet.Update
      
         txtDatum.Locked = True
         txt1.Locked = True
         txt2.Locked = True
         txt3.Locked = True
           
    rsRecordSet.Close
    rsRecordSet.Open
    
    lblEOF = rsRecordSet.EOF
    lblBOF = rsRecordSet.BOF
    
 End Sub

 
Odgovor na temu

vujkev
Beograd

Član broj: 8072
Poruke: 1347
*.telekom.yu.



+104 Profil

icon Re: Problem s upisivanjem podataka u bazu09.02.2007. u 23:49 - pre 209 meseci
Redosled pročitanih podataka iz tabele nije definisan ukoliko ne koristiš Order by. Drugim rečima svaki put kad uradiš "select * from tabela1" redosled podataka je nepredvidiv. Ukoliko ti treba određeni redosled koristi "order by"
Code:

Select * from tabela1 order by NazivKolone



Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

zormar

Član broj: 129240
Poruke: 176
212.200.223.*



Profil

icon Re: Problem s upisivanjem podataka u bazu16.02.2007. u 18:03 - pre 209 meseci
Pri upisivanju podataka u bazu novi podatak se upisuje PREKO poslednjeg zapisa. Svaki novi zapis brise prethodni.
Sta treba uraditi da upis podataka ide redom jedan iza drugog?
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: Problem s upisivanjem podataka u bazu17.02.2007. u 00:08 - pre 209 meseci
Vidi, nemoj da se ljutis, ali imas izgleda problema sa osnovnim konceptom unosa podataka (vidim to po onoj zbrci "dodaj", "ponisti".... i koristenjem locked svojstva koje nema nikakve veze sa bilo cim) ne znam gde si "pokupio" primer za takav unos, ali je prilicno tragican i samo pokazuje tvoje osnovno nerazumevanje nacina rada sa rekordsetima.

Da samo banalizujem ono osnovno, posto bi ova tema zahtevala bar jednu knjigu:

1. Koristis surogat kljuceve (long tipa)
2. Koristis prirodne kljuceve (sifre, jmbg... i sl.)

1.1 Koristis usluge DBMS-a i kljucevi su ti autonumber
1.2 Koristis sopstvenu proceduru za dodelu vrednosti kljuca pri unosu novog podatka

1.1.1 Koristis dinamicki rekordset (ServerSide, Dynamic, informacije o autonumber kljucu su odmah "vidljive")
1.1.2 Ne koristis to, vec ClientSide, KeySet npr.
1.2.1 Takodje ClientSide, KeySet, jer nema potrebe za necim drugim.

Dodatne varijacije:

a) Radis unos na SQL upitu koji sadrzi samo jednu tabelu
b) Radis unos na slozenom SQL upitu

Predvidjene operacije:

I) Dodavanje
II) Odustajanje od dodavanja
III) Cuvanje

Sta je sa izmenom postojecih podataka, pozicioniranjem na postojece podatke, brisanjem postojecih podataka ...

Ako si me sve ovo razumeo, odgovori mi koja je tvoja varijanta, pa da idemo dalje.

P.S.

Moras shvatiti da kada pozoves metodu rsRecordset.Open pozicioniran si na prvi zapis (ako ga ima), a kada pozoves AddNew metodu, upises podatak pa zatim pozoves metodu Save nema potrebe da ponovo radis ono Close/Open osim u slucaju b) kada treba da se pozove Requery metoda da bi dobio vrednosti iz "stranih tabela" , a sve to naravno ako nije u pitanju slucaj pod 1.1.1
 
Odgovor na temu

zormar

Član broj: 129240
Poruke: 176
*.adsl.sezampro.yu.



Profil

icon Re: Problem s upisivanjem podataka u bazu17.02.2007. u 12:39 - pre 209 meseci
@goranvuc
Ne ljutim se ali ipak imam potrebu da ti odgovorim.
Shvatam da forum treba odrzavati na nekom nivou, ali posecuju ga i ljudi slicni meni koji nemaju puno iskustva u programiranju, ali imaju zelju da i oni nesto urade. Naravno uz pomoc i saradnju drugih ljudi.
Zahvaljujem ti na dosadasnjoj pomoci, i bilo bi dobro ako mozes konkretno da mi odgovoris na postavljeno pitanje.
Nista od onoga sto si mi odgovorio nisam razumeo.
Sto se tice primera koji sam dao, to je primer iz kratkog kursa na ovom forumu Korak po korak:VB6, Access ADO i SQL.
pozdrav
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: Problem s upisivanjem podataka u bazu17.02.2007. u 12:54 - pre 209 meseci
Zao mi je ako ti je moj odgovor izgledao arogantno, nije mi to bila namera, vec mi je bila namera da ti ukazem na kompleksnost problema u koji si se upustio. Dakle, pisanje aplikacije za rad sa podacima ne moze da se zasniva na "resavskoj skoli" tj. moze ali nije dobro za tebe na duzi rok, jer je u pitanju multidisciplinarna oblast, koja zahteva poznavanje programiranja kao i projektovanja baza podataka. Probaj da pre bilo kakve realizacije malo proucis recordset, connection, field ... objekte (njihova svojstva i dogadjaje), takodje treba da definises sta tvoja aplikacija treba da radi sa podacima (osnovne funkcije), pogledaj malo kako su realizovane aplikacije slicnog tipa i dobro, dooooobro razmisli i informisi se o problematici.

Ako ces povrsno pristupiti ovom problemu, ja ti ne mogu na pravi nacin pomoci. Shvati da je svako od nas nekad bio na pocetku kao i ti, ali neki od nas nisu imali srece da ih usmere kao sto ti imas. Sve sto sam ti napisao je iz krajnje dobre namere.

Srecno u radu!

P.S.

Da ne mislis kako umem samo da filozofiram, stavi ovde tvoj projekat pa cu ti objasniti kroz taj tvoj primer gde gresis. Ako se ne varam, par puta ranije sam te takodje zamolio da to uradis da bi mogli da ti pomognemo, ali ...
 
Odgovor na temu

zormar

Član broj: 129240
Poruke: 176
*.adsl.sezampro.yu.



Profil

icon Re: Problem s upisivanjem podataka u bazu17.02.2007. u 13:48 - pre 209 meseci
Evo kod:
Pitanje je zasto novi zapis upisuje PREKO poslednjeg a ne dodaje ga kao sledeci?

Code:
Option Explicit
Private WithEvents connConnection As ADODB.Connection
Private WithEvents rsRecordSet As ADODB.Recordset
Dim mblnAddMode As Boolean
Private Sub ClearControls()
txtDatum.Text = ""
txtUkupno.Text = ""
txtGod.Text = ""
txt1.Text = ""
txt2.Text = ""
End Sub

Private Sub LoadDataInControls()
    If rsRecordSet.BOF = True Or rsRecordSet.EOF = True Then
        Exit Sub
    End If
    txtDatum.Text = rsRecordSet("DATUM").Value & " "
    txtUkupno.Text = rsRecordSet("UK").Value & " "
    txtGod.Text = rsRecordSet("GOD").Value & " "
    txt1.Text = rsRecordSet("I").Value & " "
    txt2.Text = rsRecordSet("II").Value & " "
End Sub

Private Sub Form_Load()
    Dim strConnect As String
    Dim strProvider As String
    Dim strDataSource As String
    Dim strDataBaseName As String
    Dim X As Integer
    strProvider = "Provider= Microsoft.Jet.OLEDB.4.0;"
    strDataSource = App.Path
    strDataBaseName = "\BAZA.mdb;"
    strDataSource = "Data Source=" & strDataSource & strDataBaseName
    strConnect = strProvider & strDataSource
    Set connConnection = New ADODB.Connection
    connConnection.CursorLocation = adUseClient
    connConnection.Open strConnect
    Set rsRecordSet = New ADODB.Recordset
    rsRecordSet.CursorType = adOpenStatic
     rsRecordSet.CursorLocation = adUseClient
     rsRecordSet.LockType = adLockPessimistic
    rsRecordSet.Source = "Select * From UKUPNO"
   rsRecordSet.ActiveConnection = connConnection
    rsRecordSet.Open
   lblBOF.Caption = rsRecordSet.BOF
    lblEOF.Caption = rsRecordSet.EOF
Adodc1.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties=DBQ=" _
& App.Path & "\BAZA.mdb;DefaultDir=" & App.Path & " ;Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
MSHFlexGrid1.ColAlignment = flexAlignCenterCenter
MSHFlexGrid1.ColWidth(0) = 500
MSHFlexGrid1.ColWidth(1) = 500
MSHFlexGrid1.ColWidth(2) = 1000
MSHFlexGrid1.ColWidth(3) = 500
MSHFlexGrid1.ColWidth(4) = 500
End Sub

Private Sub rsRecordSet_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
    If mblnAddMode = False Then
        Call LoadDataInControls
    End If
End Sub

Private Sub cmdFirst_Click()
    If rsRecordSet.BOF = False Then
        rsRecordSet.MoveFirst
    End If
  Adodc1.Refresh
 lblBOF.Caption = rsRecordSet.BOF
    lblEOF.Caption = rsRecordSet.EOF
End Sub

Private Sub cmdLast_Click()
    If rsRecordSet.EOF = False Then
        rsRecordSet.MoveLast
    End If
Adodc1.Refresh
    lblBOF.Caption = rsRecordSet.BOF
    lblEOF.Caption = rsRecordSet.EOF
End Sub

Private Sub cmdPrevious_Click()
    If rsRecordSet.BOF = False Then
        rsRecordSet.MovePrevious
        If rsRecordSet.BOF = True Then
            rsRecordSet.MoveFirst
        End If
    Else
            rsRecordSet.MoveFirst
         End If
    Adodc1.Refresh
lblBOF.Caption = rsRecordSet.BOF
    lblEOF.Caption = rsRecordSet.EOF
End Sub

Private Sub cmdNext_Click()
    If rsRecordSet.EOF = False Then
        rsRecordSet.MoveNext
           If rsRecordSet.EOF Then
                    rsRecordSet.MoveLast
           End If
    Else
            rsRecordSet.MoveLast
    End If
   Adodc1.Refresh
 lblBOF.Caption = rsRecordSet.BOF
    lblEOF.Caption = rsRecordSet.EOF
End Sub

Private Sub DisableNavigation()
    cmdFirst.Enabled = False
    cmdLast.Enabled = False
    cmdNext.Enabled = False
    cmdPrevious.Enabled = False
End Sub

Private Sub EnableNavigation()
    cmdFirst.Enabled = True
    cmdLast.Enabled = True
    cmdNext.Enabled = True
    cmdPrevious.Enabled = True
End Sub

Private Sub cmdAdd_Click()
        If cmdAdd.Caption = "&Dodaj" Then
        cmdAdd.Caption = "&Ponisti"
        cmdSave.Enabled = True
                Call DisableNavigation
                mblnAddMode = True
                Call ClearControls
        cmdEdit.Enabled = False
        cmdDelete.Enabled = False
         txtDatum.Locked = False
         txtUkupno.Locked = False
         txtGod.Locked = False
         txt1.Locked = False
         txt2.Locked = False
 txtDatum.SetFocus
    ElseIf cmdAdd.Caption = "&Ponisti" Then
        cmdAdd.Caption = "&Dodaj"
        cmdSave.Enabled = False
        Call EnableNavigation
        cmdEdit.Enabled = True
        cmdDelete.Enabled = True
        mblnAddMode = False
         txtDatum.Locked = True
         txtUkupno.Locked = True
         txtGod.Locked = True
         txt1.Locked = True
         txt2.Locked = True
          End If
End Sub

Private Sub WriteDataFromControls()
     rsRecordSet("DATUM").Value = txtDatum.Text
     rsRecordSet("UK").Value = txtUkupno.Text
     rsRecordSet("GOD").Value = txtGod.Text
     rsRecordSet("I").Value = txt1.Text
     rsRecordSet("II").Value = txt2.Text
     End Sub

Private Sub cmdSave_Click()
If cmdAdd.Caption = "&Ponisti" Then
        rsRecordSet.MoveLast
End If
    Call WriteDataFromControls
         rsRecordSet.Update
       mblnAddMode = False
        cmdSave.Enabled = False
        If cmdAdd.Caption = "&Ponisti" Then
        cmdAdd.Caption = "&Dodaj"
    End If
    If cmdEdit.Caption = "&Ponisti" Then
        cmdEdit.Caption = "&Izmeni"
    End If
         txtDatum.Locked = True
         txtUkupno.Locked = True
         txtGod.Locked = True
         txt1.Locked = True
         txt2.Locked = True
         Call EnableNavigation
    cmdEdit.Enabled = True
    cmdAdd.Enabled = True
    cmdDelete.Enabled = True
    rsRecordSet.Close
    rsRecordSet.Open
    lblBOF.Caption = rsRecordSet.BOF
    lblEOF.Caption = rsRecordSet.EOF
Adodc1.Refresh
End Sub

Private Sub cmdDelete_Click()
    If rsRecordSet.EOF = False And _
        rsRecordSet.BOF = False Then
        On Error Resume Next
        connConnection.begtrans
        rsRecordSet.Delete
        connConnection.CommitTrans
        rsRecordSet.MoveNext
        If rsRecordSet.EOF = True Then
            rsRecordSet.MoveLast
            If rsRecordSet.BOF = True Then
                Call ClearControls
            End If
        End If
   lblBOF.Caption = rsRecordSet.BOF
    lblEOF.Caption = rsRecordSet.EOF
End Sub

Private Sub cmdEdit_Click()
        If cmdEdit.Caption = "&Izmeni" Then
cmdEdit.Caption = "&Ponisti"
     cmdSave.Enabled = True
     Call DisableNavigation
     cmdAdd.Enabled = False
     cmdDelete.Enabled = False
         txtDatum.Locked = False
         txtUkupno.Locked = False
         txtGod.Locked = False
         txt1.Locked = False
         txt2.Locked = False
          txtDatum.SetFocus
            ElseIf cmdEdit.Caption = "&Ponisti" Then
        cmdEdit.Caption = "&Izmeni"
        cmdSave.Enabled = False
      Call EnableNavigation
      cmdAdd.Enabled = True
      cmdDelete.Enabled = True
         txtDatum.Locked = True
         txtUkupno.Locked = True
         txtGod.Locked = True
         txt1.Locked = True
         txt2.Locked = True
    End If
End Sub
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: Problem s upisivanjem podataka u bazu17.02.2007. u 14:22 - pre 209 meseci
Inace, kao odgovor na tvoj problem, izgleda da si zaboravio rsRecordset.AddNew u proceduri cmdAdd_Click() tako da stalno "gazis" trenutni zapis na kom si pozicioniran, a evo ti kod sa tim dodatnim redom:
Code:

Private Sub cmdAdd_Click()
    If cmdAdd.Caption = "&Dodaj" Then
        cmdAdd.Caption = "&Ponisti"
        cmdSave.Enabled = True

        Call DisableNavigation
        mblnAddMode = True
        Call ClearControls

        cmdEdit.Enabled = False
        cmdDelete.Enabled = False

        txtDatum.Locked = False
        txtUkupno.Locked = False
        txtGod.Locked = False
        txt1.Locked = False
        txt2.Locked = False

        txtDatum.SetFocus
        
        rsRecordSet.AddNew 'OVO JE NEDOSTAJALO

     ElseIf cmdAdd.Caption = "&Ponisti" Then
        
        cmdAdd.Caption = "&Dodaj"
        cmdSave.Enabled = False

        Call EnableNavigation

        cmdEdit.Enabled = True
        cmdDelete.Enabled = True
        mblnAddMode = False

        txtDatum.Locked = True
        txtUkupno.Locked = True
        txtGod.Locked = True
        txt1.Locked = True
        txt2.Locked = True

    End If
End Sub

Ovo je ono sto sigurno nedostaje, naravno, nisam uspeo da bas potpuno sve da sagledam, ali probaj prvo ovo.

Inace, AddNew je bio u tvom prvom pitanju, zasto se u medjuvremenu izgubio? Zbog toga i nije moglo da se utvrdi gde je greska, jer je u tom prvom primeru koda naizgled bilo sve u redu.

[Ovu poruku je menjao goranvuc dana 17.02.2007. u 15:58 GMT+1]
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: Problem s upisivanjem podataka u bazu17.02.2007. u 14:57 - pre 209 meseci
Evo sad sam pogledao tutorijal na koji se ti pozivas "ADOStepByStep". Tutorijal je odlican i iz njega moze puno toga da se nauci, a tvoj primer nema nikakve veze sa doticnim tutorijalom (bar ne takve da se na njega pozivas, kao "pa tamo tako pise"). Da si se malo detaljnije udubio u problematiku nasa pomoc u vezi ovoga ti ne bi ni trebala, ali sta je tu je.

Tutorijal preporucujem svakom ko krene u programiranje aplikacija za rad sa bazama podataka u VB 6.0.
Prikačeni fajlovi
 
Odgovor na temu

zormar

Član broj: 129240
Poruke: 176
*.adsl.sezampro.yu.



Profil

icon Re: Problem s upisivanjem podataka u bazu17.02.2007. u 15:07 - pre 209 meseci
Ja sam malo stariji covek, pa mi je mozda nesto i promaklo.
Zahvaljujem ti na savetima i pomoci.
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: Problem s upisivanjem podataka u bazu17.02.2007. u 15:15 - pre 209 meseci
Citat:
zormar: Ja sam malo stariji covek, pa mi je mozda nesto i promaklo.
Zahvaljujem ti na savetima i pomoci.

Nisam ni ja "u cvetu mladosti". Kako se zuris u sticanju znanja, rekao bih da si "srednjoskolac" (shvati to kao nesto pozitivno).

Pozdrav, ubuduce slobodno uploaduj projekat da ustedimo na vremenu, olaksaj nam da bi mogli da ti pomognemo.
 
Odgovor na temu

[es] :: Visual Basic 6 :: Problem s upisivanjem podataka u bazu

[ Pregleda: 2638 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

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