2012-03-29 5 views
0

Dies ist der Code zum Anzeigen von Daten aus der Datenbank zu Gridview .... Wenn ich Änderungen in GridView und es in der Datenbank aktualisieren muss ... Ich weiß nicht, wie zu tun ist es ... Kann mir jemand helfen ....Aktualisieren der Datenbank von Daten in Gridview in VB

Dim DBCONSRT, QRYSTR As String 

    Dim strSQL As String 

    Dim DBCON, myConn, myCommand, rs As Object 

    Dim NoOfRecords As Long 
    rs = CreateObject("ADODB.Recordset") 
    Const DB_CONNECT_STRING = "Provider=MSDASQL.1;Persist Security Info=False;User ID=cpa5k;Data Source=NP1;DSN=NP1;UID=cpa5k;PASSWORD=pass;SDSN=Default;HST=ibslnpb1.sysplex.homedepot.com;PRT=4101;Initial Catalog=QA1MM;" 
    myConn = CreateObject("ADODB.Connection") 
    myCommand = CreateObject("ADODB.Command") 
    myConn.Open(DB_CONNECT_STRING) 
    myCommand.ActiveConnection = myConn 
    strSQL = "select * from QA1MM.STRSK_OH FETCH FIRST 10 ROWS ONLY with ur;" 
    rs.Open(strSQL, myConn) 
    Dim myDA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter 
    Dim myDS As DataSet = New DataSet 

    myDA.Fill(myDS, rs, "MyTable") 
    DataGridView1.DataSource = myDS.Tables(0) 
    DataGridView1.Refresh() 
    myConn.Close() 

ich versuche, diese method.but es nicht

funktioniert
Dim myDA As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter 
    Dim myDS As DataSet = New DataSet 
    myDA.Fill(myDS, rs, "MyTable") 
    ds = DataGridView1.DataSource 
    myDA.Update(ds) 

ich so geändert:

Dim DBCONSRT, QRYSTR As String 
    Dim strSQL As String 
    Dim DBCON, myConn, myCommand, rs As Object 
    Dim ds As DataSet = New DataSet 
    rs = CreateObject("ADODB.Recordset") 
    Const DB_CONNECT_STRING = "Provider=MSDASQL.1;Persist Security Info=False;User ID=cpa5k;Data Source=NP1;DSN=NP1;UID=cpa5k;PASSWORD=mexico13;SDSN=Default;HST=ibslnpb1.sysplex.homedepot.com;PRT=4101;Initial Catalog=QA1MM;" 
    myConn = CreateObject("ADODB.Connection") 
    myCommand = CreateObject("ADODB.Command") 
    myConn.Open(DB_CONNECT_STRING) 
    myCommand.ActiveConnection = myConn 

    Dim myDA As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter 
    Dim myDS As DataSet = New DataSet 
    Dim dtable As DataTable = New DataTable() 
    myDA.UpdateCommand = New SqlClient.SqlCommand("UPDATE QA1MM.STRSK_OH set OH_QTY = 10 WHERE SKU_NBR = 108011", myConn) 
    ' myDA.UpdateCommand.Parameters.Add("@OH_QTY", OleDb.OleDbType.VarChar, 15, "OH_QTY") 
    ' myDA.UpdateCommand.Parameters.Add("@SKU_NBR", OleDb.OleDbType.VarChar, 15, "SKU_NBR") 
    ' myDA.UpdateCommand.Parameters(0).SourceVersion = DataRowVersion.Current 
    ' myDA.UpdateCommand.Parameters(1).SourceVersion = DataRowVersion.Current 
    dtable = DataGridView1.DataSource 
    myDA.Update(dtable) 
    myConn.Close() 

Es gibt jedoch einen Fehler wie "COM-Objekt vom Typ 'System .__ ComObject' kann nicht in den Klassentyp 'System.Data.SqlClient.SqlConnection' umgewandelt werden. Instanzen von Typen, die COM-Komponenten darstellen, können nicht in Typen umgewandelt werden, die keine COM-Komponenten darstellen. jedoch können sie gegossen werden, so lange Schnittstellen wie die zugrunde liegende COM-Komponente unterstützt Query-Interface für die IID der Schnittstelle ruft „

Ich habe die Verbindungszeichenfolge wie:.

Provider=MSDASQL.1;Persist Security Info=False;Data 
Source=NP1;DSN=NP1;SDSN=Default;HST=ibslnpb1.sysplex.homedepot.com;PRT=4101;Integrated 
Security = True;Initial Catalog=QA1MM; 

Sein nicht working.The Fehler ist "Mehrstufiger OLE DB-Vorgang erzeugte Fehler. Überprüfen Sie jeden OLE DB-Statuswert, sofern verfügbar. Keine Arbeit war getan "..... Leider weiß ich nicht, wie .....

Antwort

2

Sie schreiben wie

myConn.Open(DB_CONNECT_STRING) 
myDA.Update(ds.Tables(0)) 
myConn.Close() 

EDIT folgen zu ändern:.

Dont von DataGridView1 nehmen Sie die Datenquelle stattdessen nehmen in eine Datentabelle in einem Datensatz, wie

  Dim dtable As New DataTable() 
      dtable = DataGridView1.DataSource 

folgt und aktualisieren Sie die Tabelle mit Dataadapter als

myConn.Open(DB_CONNECT_STRING) 
myDA.Update(dtable) 
myConn.Close() 

Siehe diesen Link How to write UpdateCommand to OleDBDataAdapter

+0

Änderung der Codierung, wie ich geändert. –

+0

Nein aktivieren Integrated Security = true in der Verbindungszeichenfolge. –

+0

löschen Sie hier einige Ihrer früheren Kommentare, um die Kommentierung fortzusetzen. –

0

Try this:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

     DataSet1.Tables("employee").AcceptChanges() 
     Dim i As Integer 
     Dim cmdbuilder As New OdbcCommandBuilder(odbcadptr) 
     i = odbcadptr.Update(odbcds, "customer") 
     MsgBox("Updated Rows: " & i) 
End Sub 
Verwandte Themen