Toon posts:

[VB.NET] Datagrid probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ergens in mijn programma zit een Datagrid, die ik @ design time aangemaakt hebt (alles in visual studio dus, met wizard en toestanden ;-)). Dit doe ik omdat ik een ADO.NET boek voor me heb liggen uit de step-by-step serie van microsoft en ik wil in grote lijnen de methodes van dat boek volgen. Helaas staat er maar weinig in het boek over de datagrid control.

Voor het laden van de grid verander ik een aantal properties:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
dgridWizard6Details.DataBindings.Clear()
OleDbConnection2.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Database Password=cia;Data Source=" & sqlSource & "tmp.mdb;Password=;Jet OLEDB:Engine Type=5;Jet OLEDB:Global Bulk Transactions=1;Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:System database=;Jet OLEDB:SFP=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:New Database Password=;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Encrypt Database=False"
OleDbDataAdapter2.SelectCommand.Parameters("ProjectdeelId").Value = 1 'wizProjectdeelId
OleDbDataAdapter2.SelectCommand.Parameters("SubgroepId").Value = 1 'wizSubgroepId(0, 0)
OleDbDataAdapter2.InsertCommand.Parameters("ProjectdeelId").Value = 1 'wizProjectdeelId
OleDbDataAdapter2.InsertCommand.Parameters("SubgroepId").Value = 1 'wizSubgroepId(0, 0)
OleDbDataAdapter2.Fill(DsTmpDetails1)
dgridWizard6Details.SetDataBinding(DsTmpDetails1, "")
dgridWizard6Details.DataSource = DsTmpDetails1.Tables(0).DefaultView()
dgridWizard6Details.CaptionText = wizSubgroep


Zoals je kunt zien is dgridWizard6Details mijn datagrid, OleDbConnection1 de verbinding, OleDbDataAdapter2 de data adapter en DsTmpDetails1 mijn dataset. Nu werkt dit BIJNA allemaal prima.

Alleen INSERT werkt niet terwijl SELECT UPDATE en DELETE wel goed werken? En zoals je ziet ik wel de parameters die niet in het grid zelf staan doorgeef?
INSERT INTO tblCalcDetails (Detail, Aantal, Prijs, Notities, Tariefcode, ProjectdeelId, SubgroepId) VALUES (?, ?, ?, ?, ?, ?, ?)
Als ik dus klaar ben met werken in mijn datagrid en hij dus een insert command moet uitvoeren voor een row gaat het mis, ik krijg dan de foutmelding:
An unhandled exception of type 'System.Data.OleDb.OleDbException' occurred in system.data.dll
Als ik de SQL command uitvoer met mijn eigen functie om SQL uit te voeren werkt dat prima, dus het command dat hier uit rolt moet gewoon goed zijn. Daarom heb ik dus ook geen idee:
- waar het probleem zit
- hoe ik dit moet debuggen om daar achter te komen

Hoop dat iemand me kan vertellen hoe ik erachter kan komen waar mijn probleem zit?

[ Voor 11% gewijzigd door Verwijderd op 12-01-2006 11:22 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 17-04 23:42
Blijkbaar gaat er iets niet goed met je InsertCommand.
Ben je zeker dat alle parameters gevuld zijn ?
Ik zie dat je maar 2 parameters van je insert-command definieert / opvult.
Je zult ze allemaal moeten definieren, en, je zal ze ook in de juiste volgorde moeten definieren. OleDb kan nl. niet op basis van de naam uitmaken welke parameter het is. De parameter die je het eerste toevoegt, moet ook de eerste parameter in je query zijn.
In jouw geval voeg je dus een parameter toe voor de eerste en de tweede ?, terwijl ik vermoed dat je eigenlijk voor de 2 laatste een parameter wil toevoegen.

Kijk eens naar de verschillende overloads van de Add method van de Parameter collectie. Er zit daar een tussen waarbij je een 'source' column kunt opgeven. Die 'source' column geeft aan hoe de column in je datatable heet waar hij z'n data moet vandaan halen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
De source column opgeven aan de parameters van mijn insert command heeft geen resultaat helaas. Heb ook gespeelt met de properties van de parameters maar ook zonder resultaat. De source columns heeft Visual Studio btw al toegewezen bij het aanmaken van de data-adapter.

[ Voor 143% gewijzigd door Verwijderd op 13-01-2006 11:46 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 17-04 23:42
Maak je insert-command eens zelf aan, en zorg er ook voor dat je de parameters in de juiste volgorde toevoegt.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Als ik die 2 parameters die ik opgeef in runtime uit de database laat halen en ze in de grid zet (eigenlijk niet de bedoeling dat er ID's in mijn grid staan) doet hij het wel! Is de enige oplossing dan automatisch die ID's laten invullen bij het maken van een nieuwe row in de grid, en de colomns met die ID's gewoon hiden voor de gebruiker? Of moet de oplossing die ik ingedachte had met die parameters gewoon werken?

  • whoami
  • Registratie: December 2000
  • Laatst online: 17-04 23:42
Als je die id's niet in je grid zet, wat is de waarde dan van de data-columns in je DataRow van die 2 id-velden ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Die hebben dan geen waarde, dat is het hele probleem, ik dacht die waardes erin te zetten met die parameters? Maar moet ik die dan in mijn dataset zetten?
Pagina: 1