banjalukaforum.com https://banjalukaforum.com/ |
|
Ole db Adapter problem-VB.net https://banjalukaforum.com/viewtopic.php?f=18&t=14958 |
Stranica 1 od 1 |
Autoru: | RAbbit [ 22 Jul 2005, 09:32 ] |
Tema posta: | Ole db Adapter problem-VB.net |
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? |
Autoru: | Vertygo [ 22 Jul 2005, 16:05 ] |
Tema posta: | |
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. |
Autoru: | RAbbit [ 22 Jul 2005, 23:10 ] |
Tema posta: | Odgovor |
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 ![]() |
Autoru: | RAbbit [ 22 Jul 2005, 23:37 ] |
Tema posta: | Probao Sam kod |
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? |
Autoru: | Vertygo [ 23 Jul 2005, 12:24 ] |
Tema posta: | |
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 !!! |
Autoru: | RAbbit [ 23 Jul 2005, 23:41 ] |
Tema posta: | Odgovor |
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? |
Autoru: | Vertygo [ 24 Jul 2005, 01:08 ] |
Tema posta: | |
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 |
Autoru: | RAbbit [ 26 Jul 2005, 23:14 ] |
Tema posta: | odgovor |
Da ja bindujem na tekstbox sta tu nevalja?Kakve f-je ?Sta je to?Ajd malo objasni? |
Stranica 1 od 1 | Sva vremena su u UTC [ DST ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |