Springen naar inhoud


- - - - -
VS 2015

Gegevens Van 1 Tabel Volledig Copieren Naar Andere

VS2015

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

#1 JannekeVloesberg

JannekeVloesberg

    Starting Developer

  • Leden
  • 26 berichten
    Laatst bezocht 19 mrt 2019 17:46

Geplaatst op 17 maart 2019 - 11:38

De procedure butbewaarfctuur_click  moet alle gegevens van de tabel dbnewfact (een via procedure Voeglijntoe (zie bijlage) aangemaakte tabel met allemaal nieuwe facturatiegegevens, en die correct in access zichtbaar is, dus die update werkt) overschrijven in een bestaande tabel dbfact2. Hiertoe heb ik volgende code, die geen foutmeldig geeft maar niks wegschrijft naar dbfact2. Wat is er fout?


Visual Basic Code:
Private Sub butbewaarfactuur_Click(sender As Object, e As EventArgs) Handles butbewaarfactuur.Click


Dim myselstr As String

Dim insertstring As String

Dim nieuwfactuurnr As String



nieuwfactuurnr = Nrfact1TextBox.Text



insertstring = "INSERT INTO dbfact2 SELECT * FROM dbnewfact"

Me.OleDbSelectCommand2.CommandText = insertstring

Try



OleDbDataAdapter2.Update(DsFact21)


Catch ex As Exception



MsgBox(ex.ToString)


End Try

MsgBox("kijk nu in access nar dnnewfact en dbfact2")

'dbnewfact is ok maar dbfact2 is niet aangevuld

GroupBoxWijzigfactuur.Visible = False
ToonFACTUUR(nieuwfactuurnr)


End Sub


Bijgevoegde Bestanden



#2 JannekeVloesberg

JannekeVloesberg

    Starting Developer

  • Leden
  • 26 berichten
    Laatst bezocht 19 mrt 2019 17:46

Geplaatst op 17 maart 2019 - 12:28

Ik heb het al proberen oplossen met volgende code maar dan krijg ik foutmelding (bijlage)

Visual Basic Code:
Private Sub butbewaarfactuur_Click(sender As Object, e As EventArgs) Handles butbewaarfactuur.Click



 


'Dim myselstr As String
Dim insertstring As String
Dim nieuwfactuurnr As String

nieuwfactuurnr = Nrfact1TextBox.Text

insertstring = "INSERT INTO dbfact2 SELECT * FROM dbnewfact"

Using mycommand As New OleDb.OleDbCommand(insertstring, OleDbConnection1)



OleDbConnection1.Open()
mycommand.ExecuteNonQuery()
OleDbConnection1.Close()

End Using



Me.OleDbSelectCommand2.CommandText = insertstring

Try


OleDbDataAdapter2.Update(DsFact21)

Catch ex As Exception



MsgBox(ex.ToString)


End Try

 
MsgBox("kijk nu naar access dnnewfact en dbfact2")
GroupBoxWijzigfactuur.Visible = False



ToonFACTUUR(nieuwfactuurnr)

  
End Sub


Bijgevoegde Bestanden



#3 JannekeVloesberg

JannekeVloesberg

    Starting Developer

  • Leden
  • 26 berichten
    Laatst bezocht 19 mrt 2019 17:46

Geplaatst op 17 maart 2019 - 12:40

Ik heb dat probleem dan trachten oplossen door de id en oudeid  niet mee te geven die idd dubbel zouden zijn, en dus door alle variablen te benoemen in mijn insert to statement, maar dan krijg ik nog steeds de foutmelding (zie bijlage). Andere variabelen mogen dubbel zijn (bv is dit een 2e factuur voor een klant met naam x die dus reeds in dbfact2 voorkomt)

Bijgevoegde Bestanden



#4 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1128 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 17 maart 2019 - 19:21

Wij zien natuurlijk de structuur van je databank niet.
En ik kan uiteraard niet voor andere forumleden spreken, maar wat mij betreft nodigt de huidige vorm (.dockx??) en inhoud van deze vraag mij ook niet echt uit om hier tijd in te stoppen.

Overigens is de foutboodschap wel héél duidelijk.

#5 JannekeVloesberg

JannekeVloesberg

    Starting Developer

  • Leden
  • 26 berichten
    Laatst bezocht 19 mrt 2019 17:46

Geplaatst op 17 maart 2019 - 20:29

Visual Basic Code:
Private Sub butbewaarfactuur_Click(sender As Object, e As EventArgs) Handles butbewaarfactuur.Click



 


'Dim myselstr As String

Dim insertstring As String

Dim nieuwfactuurnr As String



nieuwfactuurnr = Nrfact1TextBox.Text


insertstring = "INSERT INTO dbfact2 SELECT * FROM dbnewfact"

Using mycommand As New OleDb.OleDbCommand(insertstring, OleDbConnection1)



OleDbConnection1.Open()

mycommand.ExecuteNonQuery()

OleDbConnection1.Close()


End Using



 


Me.OleDbSelectCommand2.CommandText = insertstring

Try



OleDbDataAdapter2.Update(DsFact21)


Catch ex As Exception



MsgBox(ex.ToString)


End Try



 

 

 


MsgBox("kijk nu naar access dnnewfact en dbfact2")

GroupBoxWijzigfactuur.Visible = False



ToonFACTUUR(nieuwfactuurnr)

 

 

 


End Sub


#6 JannekeVloesberg

JannekeVloesberg

    Starting Developer

  • Leden
  • 26 berichten
    Laatst bezocht 19 mrt 2019 17:46

Geplaatst op 17 maart 2019 - 20:51

Visual Basic Code:
Private Sub ButVoeglijntoe_Click(sender As Object, e As EventArgs) Handles ButVoeglijntoe.Click
Dim nrfact, nrfact2, nrfact1, klant, datumfactuur, datumuitvoering, produkt, eenheid As String
Dim aantal, prijspereenheid, totaalperprodukt, totaalperproduktinclbtw, totaalfactuur,
totaalfactuurinclbtw, btw, bedragbtw As Double

Dim myselstr As String
Dim insertstring As String


nrfact2 = Nrfact2TextBox.Text
nrfact1 = Nrfact1TextBox.Text
nrfact = nrfact1 & "/" & nrfact2
datumfactuur = DatumfactuurTextBox.Text
datumuitvoering = DatumuitvoeringTextBox.Text
klant = KlantTextBox.Text

If CheckBoxWerk.Checked = True Then
AllesvanProduktUit()
AllesVanWerkAan()
produkt = ComboBoxWerk.Text
Else
AllesVanWerkUit()
AllesVanProduktAan()
produkt = cboProdukt.Text
End If

If CheckBoxProdukt.Checked = True Then
AllesVanWerkUit()
AllesVanProduktAan()
produkt = cboProdukt.Text
Else
AllesvanProduktUit()
AllesVanWerkAan()
produkt = ComboBoxWerk.Text
End If


If txtatl.Text <> "" Then
aantal = txtatl.Text
Else
MsgBox("Vul aantal in aub")
End If

If WERK = True Then
eenheid = ComboBoxEenheid.Text
Else
eenheid = TextBoxPrijsPer.Text
End If

prijspereenheid = txtPRIJSPEREENHEID.Text
totaalperprodukt = txttotaalprijslijn.Text

totaalfactuur = txttotaalzonderbtw.Text
totaalfactuurinclbtw = txttotaalinclbtw.Text


btw = 21 'nog veranderen
bedragbtw = totaalperprodukt * (btw / 100)
totaalperproduktinclbtw = totaalperprodukt + bedragbtw


If totaalfactuur = 0 Then
totaalfactuur = totaalperprodukt
Else
totaalfactuur = totaalfactuur + totaalperprodukt
End If

totaalfactuurinclbtw = totaalfactuur * (1 + btw / 100)

txttotaalzonderbtw.Text = totaalfactuur
txttotaalinclbtw.Text = totaalfactuurinclbtw
txtinbf.Text = totaalfactuur * 40.3399

insertstring = "INSERT INTO dbnewfact(nrfact, nrfact2, nrfact1, " &
"klant, datumfactuur, datumuitvoering, " &
"produkt, aantal, eenheid, prijspereenheid, totaalperprodukt," &
" totaalperproduktinclbtw, totaalfactuur, totaalfactuurinclbtw," &
" btw, bedragbtw)" &
"VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"

Using mycommand As New OleDb.OleDbCommand(insertstring, OleDbConnection1)
mycommand.Parameters.AddWithValue("nrfact", nrfact)
mycommand.Parameters.AddWithValue("nrfact2", nrfact2)
mycommand.Parameters.AddWithValue("nrfact1", nrfact1)
mycommand.Parameters.AddWithValue("klant", klant)
mycommand.Parameters.AddWithValue("datumfactuur", datumfactuur)
mycommand.Parameters.AddWithValue("datumuitvoering", datumuitvoering)
mycommand.Parameters.AddWithValue("produkt", produkt)
mycommand.Parameters.AddWithValue("aantal", aantal)
mycommand.Parameters.AddWithValue("eenheid", eenheid)
mycommand.Parameters.AddWithValue("prijspereenheid", prijspereenheid)
mycommand.Parameters.AddWithValue("totaalperprodukt", totaalperprodukt)
mycommand.Parameters.AddWithValue("totaalperproduktinclbtw", totaalperproduktinclbtw)
mycommand.Parameters.AddWithValue("totaalfactuur", totaalfactuur)
mycommand.Parameters.AddWithValue("totaalfactuurinclbtw", totaalfactuurinclbtw)
mycommand.Parameters.AddWithValue("btw", btw)
mycommand.Parameters.AddWithValue("bedragbtw", bedragbtw)
OleDbConnection1.Open()
mycommand.ExecuteNonQuery()
OleDbConnection1.Close()
End Using

' telkens het totaal (factuur,factuurinclbtw en bedragbtw) aanpast in dbnewfact
''

Dim updatestring As String

''wijzig de totalen in dbnewfact lijn per lijn en shcrijf dan alles definitef weg naar dbnewfact via update

'updatestring = "UPDATE dbnewfact SET dbnewfact.totaalfactuur= " & totaalfactuur &
' ", dbnewfact.totaalfactuurinclbtw= " & totaalfactuurinclbtw & ""

updatestring = "UPDATE dbnewfact SET dbnewfact.totaalfactuur=?, dbnewfact.totaalfactuurinclbtw=?"

Using mycommand As New OleDb.OleDbCommand(updatestring, OleDbConnection1)

mycommand.Parameters.Add("totaalfactuur", totaalfactuur)
mycommand.Parameters.Add("totaalfactuurinclbtw", totaalfactuurinclbtw)

OleDbConnection1.Open()
mycommand.ExecuteNonQuery()
OleDbConnection1.Close()
End Using


Me.OleDbSelectCommand7.CommandText = updatestring

Try
OleDbDataAdapterNewfact.Update(DsNewfact1)
Catch ex As Exception
MsgBox(ex.ToString)
End Try



myselstr = "select dbnewfact.* from dbnewfact"
Me.OleDbSelectCommand7.CommandText = myselstr
DsNewfact1.Clear()
OleDbDataAdapterNewfact.Fill(DsNewfact1)


txtatl.Text = ""
txtPRIJSPEREENHEID.Text = ""
TextBoxPrijsPer.Text = ""
AllesvanProduktUit()
AllesVanWerkUit()
CheckBoxWerk.Enabled = True
CheckBoxProdukt.Enabled = True


End Sub



#7 JannekeVloesberg

JannekeVloesberg

    Starting Developer

  • Leden
  • 26 berichten
    Laatst bezocht 19 mrt 2019 17:46

Geplaatst op 17 maart 2019 - 20:55

Hopelijk is het nu duidelijker? Nu ik weet hoe ik dat moet doen code doorgeven, zal ik dat zeker doen.
Bedankt Dirk!

Hopelijk wil je me nu wel verder helpen hiermee...ja ik moet veel leren, en ik doe mijn best, ik had het liever uitgegeven aan iemand die het programma tegen betaling wou herschrijven, maar ik hen geen kandidaten gevonden, dus ben ik zelf aan begonnen...
Sorry dus voor mijn vragen, maar ik heb boeken gelezen vb.net, en veel websites bezocht, maar het is niet eenvoudig , vooral al wat ADO betreft, waar in de boeken meestal (te) snel wordt gegaan.

Dus alle tips over hoe ik dit beter moet leren zijn welkom!

#8 JannekeVloesberg

JannekeVloesberg

    Starting Developer

  • Leden
  • 26 berichten
    Laatst bezocht 19 mrt 2019 17:46

Geplaatst op 17 maart 2019 - 21:02

en dan hierbij de opbouw van de database zoals gevraagd (in pdf ipv docx) en een printscreen van de form (klantgegevens zijn voor respect privacy vervangen door d's)


Wat ik dus deed is eerst een tabel dbnewfact lijn per lijn aanmaken, waar ik voor een bepaalde klant een nieuwe factuur aanmaak , via de procedure VoeglijnToe. Via update schrijf ik de lijn telkens ook definitief weg naar de oorspronkelijke database.

Als de ganse factuur is aangemaakt (dus alle lijnen) voor die klant, wil ik die factuur ook toevoegen aan alle andere facturen (die zitten in bestaande tabel dbfact2). Dit in de procedure BewaarFactuur. Ik wil dit via dat INSERT INTO command doen, maar er gebeurt dus niks.

Dat is dus mijn vraag, wat doe ik hier fout? Waarom wordt dbfact2 niet gevuld ?

Hopelijk is het nu wat duidelijker...

Bijgevoegde Bestanden



#9 Dirk Andries

Dirk Andries

    Guru Developer

  • Leden
  • PipPipPipPipPipPip
  • 1128 berichten
    Laatst bezocht
  • LocatieGent

Geplaatst op 19 maart 2019 - 11:11

Bericht bekijkenJannekeVloesberg, op 17 maart 2019 - 21:02, zei:

en dan hierbij de opbouw van de database zoals gevraagd (in pdf ipv docx)
Dat is niet echt beter. Je had b.v. een lege databank kunnen opleveren.
En de code (projectvorm) die daar op werkt.


Bericht bekijkenJannekeVloesberg, op 17 maart 2019 - 21:02, zei:

Wat ik dus deed is eerst ...
In ADO.NET is dat niet nodig, je kan disconnected werken (op de tabellen in de dataset in het geheugen).
Dus je wijzigt in je DataSet en indien er bewaard moet worden doe je de update op de adapter, indien niet dan niet.
Geen reden hier om te kopiëren van de ene (tijdelijke) tabel naar de andere.
Het heeft niet echt zoveel zin je aanpak van tig jaar geleden te behouden als je overstapt naar ADO.NET.





Ook met taq VS 2015, VS2015 voorzien

0 gebruiker(s) lezen dit onderwerp

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

Inloggen


[VS 2015] 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)