Springen naar inhoud


- - - - -
DB .NET

Update Meerdere Rows In Access Db

Update

  • Log in a.u.b. om te beantwoorden
Er zijn 4 reacties in dit onderwerp

#1 A.Scheepers

A.Scheepers

    Starting Developer

  • Leden
  • 21 berichten
    Laatst bezocht

Geplaatst op 15 februari 2013 - 18:01

De sub die ik gemaakt hebt werkt na 6 inserts niet meer en ik moet er ongeveer 80 stuks.
Wat gaat er fout of is er een andere/simpele oplossing?

Visual Basic Code:
Private Function Opslaan(ByVal id As Integer) As Boolean

Dim cnUpdate As New OleDbConnection(dbpath)
Dim cmdUpdate As New OleDbCommand
Dim query As String
Dim iSqlStatus As Integer
Dim Item As String = DatumTijdMakenZonderStrepen(DateString & " " & TimeString)

query = "UPDATE screening SET NaarPeridos = " & Item & " WHERE id = " & id
cmdUpdate.Parameters.Clear()

With (cmdUpdate)
.CommandText = query
.CommandType = CommandType.Text
.Parameters.AddWithValue("@NaarPeridos", Item)
.Parameters.AddWithValue("@id", id)
.Connection = cnUpdate

End With
HandleConnection(cnUpdate)
iSqlStatus = cmdUpdate.ExecuteNonQuery

If Not iSqlStatus = 0 Then
Return False
Else
Return True
End If
End Function



#2 Benno

Benno

    R.I.P.

  • Leden
  • PipPipPipPipPip
  • 949 berichten
    Laatst bezocht 08 mrt 2018 20:32
  • LocatieGyor, Magyarország

Geplaatst op 15 februari 2013 - 19:49

Ik denk dat het beter kan.

Je spreekt over insert, maar je sql is een update?
Je creëert telkens opnieuw  het command object, de parameter objecten en de connection.
Je opent en sluit de connection voor elke update.
Je gebruikt de parameterobjecten niet echt?

Nog wat vragen om je naar een betere oplossing te helpen:
Waarvoor dient die dataset?
Wat doen TijdMakenZonderstrepen en HandleConnection exact?
Wat is het type van NaarPeridos in de databank?
Waar komen de gegevens DateString, TimeString en dbpath vandaan?

#3 A.Scheepers

A.Scheepers

    Starting Developer

  • Leden
  • 21 berichten
    Laatst bezocht

Geplaatst op 16 februari 2013 - 15:14

De bedoeling is in veld 'NaarPeridos' in de Access db een huidige datum/tijd neer te zetten.
M.b.v. de Id zoek ik het record.
Ik kan de Id's in een array zetten met dat array een functie schrijven die de db update, maar hoe doe ik dit handig. Deze functie is dan ook handig bij andere programma's die nog komen.
De HandleConnection is het controleren of de db open/dicht is en eventueel daardoor open te maken.

#4 Benno

Benno

    R.I.P.

  • Leden
  • PipPipPipPipPip
  • 949 berichten
    Laatst bezocht 08 mrt 2018 20:32
  • LocatieGyor, Magyarország

Geplaatst op 16 februari 2013 - 16:38

Visual Basic Code:
	Public Sub UpdateScreeningTimes(lijst As IList(Of Int32), datumTijd As DateTime)
		Const UpdateSQL As String = "UPDATE Screening SET NaarPeridos = ? WHERE Id = ?"
		Using connection As New OleDb.OleDbConnection(ConnectionString)
			Using command As New OleDb.OleDbCommand(UpdateSQL, connection)
				command.Parameters.Add("NaarPeridos", OleDb.OleDbType.Date)
				command.Parameters.Add("Id", OleDb.OleDbType.Integer)
				command.Parameters("NaarPeridos").Value = datumTijd
				connection.Open()
				command.Prepare()
				For Each id As Int32 In lijst
					command.Parameters("Id").Value = id
					command.ExecuteNonQuery()
				Next
				connection.Close()
			End Using
		End Using
	End Sub



#5 Benno

Benno

    R.I.P.

  • Leden
  • PipPipPipPipPip
  • 949 berichten
    Laatst bezocht 08 mrt 2018 20:32
  • LocatieGyor, Magyarország

Geplaatst op 16 februari 2013 - 16:42

Oproepen met bijvoorbeeld:
Visual Basic Code:
	 Dim db As New DataBank
	 Dim ids() As Int32 = {3, 13, 23, 33, 43, 53, 63}
	Try
		 db.UpdateScreeningTimes(ids, DateTime.Now)
	Catch ex As Exception
		MessageBox.Show(ex.Message)
	End Try







Ook met taq DB .NET, Update voorzien

0 gebruiker(s) lezen dit onderwerp

0 lid(leden), 0 bezoeker(s), 0 anonieme gebruikers

Inloggen


[DB .NET] Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)