banjalukaforum.com

Dobrodošli na banjalukaforum.com
Danas je 18 Jul 2025, 05:10

Sva vremena su u UTC [ DST ]




Započni novu temu Odgovori na temu  [ 8 Posta ] 
Autoru Poruka
PostPoslato: 22 Jul 2005, 09:32 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Imam problem sa spajanjem sa bazom podataka u Access-u preko Ole DB.
Sql Adapter mi radi odlicno al ovaj....
Prije jedno deset dana mi je sve radilo Ok a sad poblesavilo
Stalno kad trebam da generisem select, insert i update mi izbacuje poruku
-Format of the initalization string does not conform to the ole db specification-
Ponavljam baza je u Access-u, da napomenem ne mogu pristupiti nikoj accessovoj bazi cak ni Northwind bazi.
Nisam pokusavao da se konektujem putem koda nemam nigdje ja mislim gotov kod a neda mi se toliko kucati jer cisto sumljam da cu uspeti.
Pomozite, Vert i ostali?


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 22 Jul 2005, 16:05 
OffLine
Majstorski kandidat
Majstorski kandidat
Korisnikov avatar

Pridružio se: 12 Jul 2001, 01:00
Postovi: 457
Lokacija: Banjaluka
Ja ne znam zasto ljudi uzimaju te genericke selecte inserte update ... prema njima programiranje bi trebalo da se svede samo na ljepljenje kontrola i generisanjem komandi za iste.
Rabbit u Server Exploreru dodaj bazu i u properties-u baze ces naci "ConnectionString" njega kopitas malo izmjenis i napravis svoju f-ju za konektovanje na bazu.
Evo jednostavan primjer:
1. Napravi button i datagrid, dodaj sledeci kod za button
Kod:
'    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Query As String
        Query = "Select * FROM Address"
        DataGrid1.DataSource = ReturnDs(Query).Tables(0)
'   End Sub


2. Ispod handlera za button dodaj sledeci kod
Kod:
    Public Function GetConnString() As String
        GetConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\IvanM\My Documents\Visual Studio Projects\ContactMaintenace\bin\ContactMaintenace.mdb"
    End Function
    Public Function ReturnDs(ByVal QueryString As String) As DataSet
        Dim OdbComm As OleDbCommand
        Dim OdbConn As New OleDbConnection(GetConnString)
        Dim OdbDa As OleDbDataAdapter
        Dim DSet As DataSet

        OdbConn.Open()
        OdbComm = New OleDbCommand(QueryString, OdbConn)
        OdbDa = New OleDbDataAdapter(OdbComm)
        DSet = New DataSet
        OdbDa.Fill(DSet)
        OdbConn.Close()
        Return DSet
    End Function


Napravi bazu koja ce sadrzavati tabelu "Address".
Eto to je ovako ugrubo.

_________________
Ivan M.


Vrh
 Profil  
 
 Tema posta: Odgovor
PostPoslato: 22 Jul 2005, 23:10 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Ma probacu se konektovati kodom, mrsko mi pisati kod za Access,najradije bi da kopiram imam ja to odradjeno za Sql server al sad cu kopirati tvoj,da probam al verovatno prethodno treba importovati Ole db namespace za Access ili ne?
Ma opet ce mi se pojaviti greska garant. Mislio sam koristiti Data Form Wizard da mi generise kod za kretanje,update baze... i ostalo a onda kodom dataset spojiti sa datagridom.
Meni je to sve fino radilo pre 10 dana mozda sam pokupio virus :)


Vrh
 Profil  
 
 Tema posta: Probao Sam kod
PostPoslato: 22 Jul 2005, 23:37 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Probao sam tvoj kod i uspesno se spojio sa Nortwind bazom u Access-u
i generisao podatke u Datagrid iz Customers tabele.
Naravno trebalo je jos samo importovati Ole DB namespace to si zaboravio, puno hvala, to je sigurno neki bug u programu.
Da te pitam kad si vec ovaj dio koda napisao kako izgleda tvoj kod za editovanje baze tj. kretanje po podacima,update, edit,cancel...
Meni se mnogo svidja genericki kod koga generise Data Form Wizard.
Da li ja pametno njega koristiti?


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 23 Jul 2005, 12:24 
OffLine
Majstorski kandidat
Majstorski kandidat
Korisnikov avatar

Pridružio se: 12 Jul 2001, 01:00
Postovi: 457
Lokacija: Banjaluka
Kod:
Da te pitam kad si vec ovaj dio koda napisao kako izgleda tvoj kod za editovanje baze tj. kretanje po podacima,update, edit,cancel...

Ja ne dozvoljavam update edit ili cancel iz datagrid-a, ali ako to zelis samo prilikom kreiranja data set-a trebas dodati command builder koji ce da prati izmejene unutar data set-a koji ces pridruziti data gridu.

Kod:
Dim CB as OleDbCommandBuilder

    Public Function GetConnString() As String
        GetConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\IvanM\My Documents\Visual Studio Projects\ContactMaintenace\bin\ContactMaintenace.mdb"
    End Function

    Public Function ReturnDs(ByVal QueryString As String) As DataSet
        Dim OdbComm As OleDbCommand
        Dim OdbConn As New OleDbConnection(GetConnString)
        Dim OdbDa As OleDbDataAdapter
        Dim DSet As DataSet
        Dim CB As OleDbCommandBuilder

        OdbConn.Open()
        OdbComm = New OleDbCommand(QueryString, OdbConn)
        OdbDa = New OleDbDataAdapter(OdbComm)
        DSet = New DataSet
        CB = New OleDbCommandBuilder(OdbDa)
        OdbDa.Fill(DSet)
        OdbConn.Close()
        Return DSet
    End Function

'kod za update button
        Dim changes As DataTable = DS.GetChanges()
        da.Update(changes)
        Data.AcceptChanges()
'end

Data set, command builder, data adapter postavi kao globalne promjenjljive.
Uglavnom ja sve radim preko formi a ne preko data grid-a zbog ogranicene kontrole !!!

_________________
Ivan M.


Vrh
 Profil  
 
 Tema posta: Odgovor
PostPoslato: 23 Jul 2005, 23:41 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Nisam mislio na update,cancel,edit datagrida, to ni ja nedozvoljavam vec
uopsteno baze podataka iz tekstboxa recimo kad stavis dugmad za navigaciju prvi zadnji dole gore:

Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
Me.BindingContext(objdsZeko, "Customers").CancelCurrentEdit()
Me.objdsZeko_PositionChanged()

End Sub
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
If (Me.BindingContext(objdsZeko, "Customers").Count > 0) Then
Me.BindingContext(objdsZeko, "Customers").RemoveAt(Me.BindingContext(objdsZeko, "Customers").Position)
Me.objdsZeko_PositionChanged()
End If

End Sub
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
Try
'Clear out the current edits
Me.BindingContext(objdsZeko, "Customers").EndCurrentEdit()
Me.BindingContext(objdsZeko, "Customers").AddNew()
Catch eEndEdit As System.Exception
System.Windows.Forms.MessageBox.Show(eEndEdit.Message)
End Try
Me.objdsZeko_PositionChanged()

End Sub
Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
Try
'Attempt to update the datasource.
Me.UpdateDataSet()
Catch eUpdate As System.Exception
'Add your error handling code here.
'Display error message, if any.
System.Windows.Forms.MessageBox.Show(eUpdate.Message)
End Try
Me.objdsZeko_PositionChanged()

End Sub
Private Sub btnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoad.Click
Try
'Attempt to load the dataset.
Me.LoadDataSet()
Catch eLoad As System.Exception
'Add your error handling code here.
'Display error message, if any.
System.Windows.Forms.MessageBox.Show(eLoad.Message)
End Try
Me.objdsZeko_PositionChanged()

End Sub
Private Sub btnNavFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNavFirst.Click
Me.BindingContext(objdsZeko, "Customers").Position = 0
Me.objdsZeko_PositionChanged()

End Sub
Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
Me.BindingContext(objdsZeko, "Customers").Position = (Me.objdsZeko.Tables("Customers").Rows.Count - 1)
Me.objdsZeko_PositionChanged()

End Sub
Private Sub btnNavPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNavPrev.Click
Me.BindingContext(objdsZeko, "Customers").Position = (Me.BindingContext(objdsZeko, "Customers").Position - 1)
Me.objdsZeko_PositionChanged()

End Sub
Private Sub btnNavNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNavNext.Click
Me.BindingContext(objdsZeko, "Customers").Position = (Me.BindingContext(objdsZeko, "Customers").Position + 1)
Me.objdsZeko_PositionChanged()

End Sub
Private Sub objdsZeko_PositionChanged()
Me.lblNavLocation.Text = (((Me.BindingContext(objdsZeko, "Customers").Position + 1).ToString + " of ") _
+ Me.BindingContext(objdsZeko, "Customers").Count.ToString)

End Sub
Private Sub btnCancelAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelAll.Click
Me.objdsZeko.RejectChanges()

End Sub
Public Sub UpdateDataSet()
'Create a new dataset to hold the changes that have been made to the main dataset.
Dim objDataSetChanges As Use_form_wizard_2.dsZeko = New Use_form_wizard_2.dsZeko
'Stop any current edits.
Me.BindingContext(objdsZeko, "Customers").EndCurrentEdit()
'Get the changes that have been made to the main dataset.
objDataSetChanges = CType(objdsZeko.GetChanges, Use_form_wizard_2.dsZeko)
'Check to see if any changes have been made.
If (Not (objDataSetChanges) Is Nothing) Then
Try
'There are changes that need to be made, so attempt to update the datasource by
'calling the update method and passing the dataset and any parameters.
Me.UpdateDataSource(objDataSetChanges)
objdsZeko.Merge(objDataSetChanges)
objdsZeko.AcceptChanges()
Catch eUpdate As System.Exception
'Add your error handling code here.
Throw eUpdate
End Try
'Add your code to check the returned dataset for any errors that may have been
'pushed into the row object's error.
End If

End Sub
Public Sub LoadDataSet()
'Create a new dataset to hold the records returned from the call to FillDataSet.
'A temporary dataset is used because filling the existing dataset would
'require the databindings to be rebound.
Dim objDataSetTemp As Use_form_wizard_2.dsZeko
objDataSetTemp = New Use_form_wizard_2.dsZeko
Try
'Attempt to fill the temporary dataset.
Me.FillDataSet(objDataSetTemp)
Catch eFillDataSet As System.Exception
'Add your error handling code here.
Throw eFillDataSet
End Try
Try
'Empty the old records from the dataset.
objdsZeko.Clear()
'Merge the records into the main dataset.
objdsZeko.Merge(objDataSetTemp)
Catch eLoadMerge As System.Exception
'Add your error handling code here.
Throw eLoadMerge
End Try

End Sub
Public Sub UpdateDataSource(ByVal ChangedRows As Use_form_wizard_2.dsZeko)
Try
'The data source only needs to be updated if there are changes pending.
If (Not (ChangedRows) Is Nothing) Then
'Open the connection.
Me.OleDbConnection1.Open()
'Attempt to update the data source.
OleDbDataAdapter1.Update(ChangedRows)
OleDbDataAdapter2.Update(ChangedRows)
OleDbDataAdapter3.Update(ChangedRows)
End If
Catch updateException As System.Exception
'Add your error handling code here.
Throw updateException
Finally
'Close the connection whether or not the exception was thrown.
Me.OleDbConnection1.Close()
End Try

End Sub
Public Sub FillDataSet(ByVal dataSet As Use_form_wizard_2.dsZeko)
'Turn off constraint checking before the dataset is filled.
'This allows the adapters to fill the dataset without concern
'for dependencies between the tables.
dataSet.EnforceConstraints = False
Try
'Open the connection.
Me.OleDbConnection1.Open()
'Attempt to fill the dataset through the OleDbDataAdapter1.
Me.OleDbDataAdapter1.Fill(dataSet)
Me.OleDbDataAdapter2.Fill(dataSet)
Me.OleDbDataAdapter3.Fill(dataSet)
Catch fillException As System.Exception
'Add your error handling code here.
Throw fillException
Finally
'Turn constraint checking back on.
dataSet.EnforceConstraints = True
'Close the connection whether or not the exception was thrown.
Me.OleDbConnection1.Close()
End Try

End Sub

Ja bi izvukao podatke u tekstboxove naravno a ispod stavio datagrid cisto zbog ljepseg izgleda, i updatovao dataset a to je isti dataset koga koristi datagrid znaci svaka promena koju ja izvrsim u tekstboxu i snimim reflektuje se na datagrid.Ovo gore je kod koga generise dataform wizard.
Kakav ti kod koristis?


Vrh
 Profil  
 
 Tema posta:
PostPoslato: 24 Jul 2005, 01:08 
OffLine
Majstorski kandidat
Majstorski kandidat
Korisnikov avatar

Pridružio se: 12 Jul 2001, 01:00
Postovi: 457
Lokacija: Banjaluka
Koliko vidim ti data set bindujes na text box, sto opet ja ne radim nego pravim posebno f-je i podatke izvlacim iz data table-a

_________________
Ivan M.


Vrh
 Profil  
 
 Tema posta: odgovor
PostPoslato: 26 Jul 2005, 23:14 
OffLine
Pripravnik
Pripravnik
Korisnikov avatar

Pridružio se: 08 Nov 2004, 08:54
Postovi: 211
Da ja bindujem na tekstbox sta tu nevalja?Kakve f-je ?Sta je to?Ajd malo objasni?


Vrh
 Profil  
 
Prikaži postove u poslednjih:  Poređaj po  
Započni novu temu Odgovori na temu  [ 8 Posta ] 

Sva vremena su u UTC [ DST ]


Ko je OnLine

Korisnici koji su trenutno na forumu: Nema registrovanih korisnika i 1 gost


Ne možete postavljati nove teme u ovom forumu
Ne možete odgovarati na teme u ovom forumu
Ne možete monjati vaše postove u ovom forumu
Ne možete brisati vaše postove u ovom forumu
Ne možete slati prikačene fajlove u ovom forumu

Pronađi:
Idi na:  
Powered by phpBB® Forum Software © phpBB Group
Hosting BitLab
Prevod - www.CyberCom.rs