Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hur uppdaterar man en databas?

Postades av 2004-12-29 23:44:42 - Ola Ljungcrantz, i forum asp.net generellt, Tråden har 29 Kommentarer och lästs av 673 personer

Kan jag få hjälp med den kod som krävs för att uppdatera den Exceldatabas som jag har i följande kod? Meningen är att koden ska ligga under "Button2". Att det ska vara så svårt. Jag har letat och letat.
Koden läser ju först in allt som finns i tabellen [info$]. Informationen visas i DataGrid1. Där kan man ju manuellt ändra denna info och där efter vill jag kunna uppdatera databasen igen. Hur ska jag göra?

mvh Ola

Koden:
<code>
Dim Connection As String
Dim Sql As String = "SELECT * FROM [info$]"
Dim objDS As New DataSet




Private Sub Form1_Load() Handles MyBase.Load

End Sub

Private Sub Button1_Click() Handles Button1.Click
Connection = "Provider=Microsoft.Jet.OLEDB.4.0;"
Connection = Connection & "Data Source=C:\databas.xls;"
Connection = Connection & "Extended Properties=Excel 8.0;"

Dim objConn As New OleDb.OleDbConnection(Connection)
Dim objAdapter1 As New OleDb.OleDbDataAdapter(Sql, objConn)
objConn.Open()
objAdapter1.Fill(objDS, "resultat")
objConn.Close()
DataGrid1.DataSource = objDS.Tables("resultat")
End Sub


Private Sub DataGrid1_Navigate() Handles DataGrid1.Navigate

End Sub

Private Sub Button2_Click() Handles Button2.Click
'Här ska databasen uppdateras!



End Sub
End Class
</code>


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-05 09:44:50 - Ola Ljungcrantz

Jag har nu försökt med allt. Kan ni hjälpa mig? Det här är mitt första försök att skriva till en databas och det måste väl vara "en baggis" för er som varit med ett tag?
Som koden ser ut nu fungerar allt fram tills det är dags att uppdatera databasen. Det händer ingenting. Inte ens ett felmeddelande.

Koden ser nu ut så här:




Imports System.Data.OleDb

Public Class Form1


Dim Sql As String = "SELECT * FROM [info$]"
Dim objDS As New DataSet
Dim Connection As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\databas.xls;" & "Extended Properties=Excel 8.0;"
Dim objConn As New OleDb.OleDbConnection(Connection)
Dim objAdapter1 As New OleDb.OleDbDataAdapter(Sql, objConn)
Dim objTable As DataTable



Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub


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


'Här Läses Data från Databasen

objConn.Open()
objDS.Clear()
objAdapter1.Fill(objDS, "resultat")
objConn.Close()


'Här lägger jag till info

objTable = objDS.Tables("resultat")
BindingContext(objDS, "resultat").Position = BindingContext(objDS, "resultat").Count - 1
Dim myRow As DataRow
myRow = objTable.NewRow()
myRow(0) = "pris"
myRow(1) = "0,21"
objTable.Rows.Add(myRow)
objDS.Tables("resultat").Rows(2).AcceptChanges()


'Och här försöker jag spara allt i databasen

objAdapter1.Update(objDS, "resultat")

End Sub
End Class


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-05 09:56:05 - Andreas Håkansson

Ola,

Bygg en vanlig <b>UPDATE</b> sql-sats, skapa ett <b>OldDbCommand</b> objekt som användet ditt querry. Sen anropar du <b>ExecuteNonQuery</b> metoden på ditt kommando.

Hoppas det löser sig!


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-05 10:17:17 - Ola Ljungcrantz

Kan för lite för att fixa det själv. Kan man få hjälp med den koden? Det blir väl inte så många rader vad jag förstår?

mvh Ola


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-05 10:30:16 - Andreas Håkansson

Ola,

Börja med att läsa igenom http://www.dotnetjunkies.com/quickstart/aspplus/doc/adoplusoverview.aspx för att få en intriduktion till ADO.NET


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-05 13:54:04 - Ola Ljungcrantz

Jag har 2-3 böcker att läsa i men det hjälper inte om man kört fast.

//Ola


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-05 14:07:31 - Andreas Håkansson

Ola,

Så din definition på att köra fast är att helt enkelt inte försöka? Det är så jag tolkar ditt svar när du ställer en fråga utan kod för den delen som du har problem med - det kan jag köpa, man vet inte alltid var man ska börja.

Sen svara jag med hänvisningar till vilka klasser som du skall använda, varpå du säger att du inte har tillräckliga kunskaper? Var blir nästa steg då? Jo att någon skall skriva koden till dig. Har du slått upp klasserna jag pekade dig till? Har du hittat på dem i dokumentationen och i dina 2-3 böcker? Jag är övertyga att tillsammans skall de ge dig tillräckligt mer information och exempel för att du skall kunna börja testa egen kod - funkar den koden inte sen så är det då lämpilgt att återvända med den koden här, varpå folk kan ge dig hjälp.

Snälla rätta mig om jag har fel?


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-05 14:25:38 - Rickard Robin

Ola, jag tror inte att du har genererat Update/Insert/Delete commands för din dataadapter.
Alltså du föder datasetet manuellt med data via kod utan att använda adapter.
Dataadaptern vet då inte hur den ska kunna uppdatera databasen, den kan ju inte gissa.
(Om du kommer ihåg gamla asp Recordset.Updatebatch det är samma koncept)
För att du ska kunna köra en Adapter.Update funktion, så måste dessa commands vara genererade.
Ofta görs det automatiskt beroende på HUR du använder dataadaptern, men ibland måste du
generera dessa själv.
Vad dataadapter egentligen gör i teorin är att synka sitt innehåll med en källa.
Har en datarow sin state satt till deleted,kommer ett deletesqlkommando genereras och utföras
vid .update tillfället. Samma sak med rowstate = new, eller modified.

Glöm ej heller för att kunna uppdatera och ta bort från en tabell rekommenderar jag att du har
ett id fält som är din primary key. tror att sqlcommanbuilder från lite problem annars.


Du ska använda ett objekt som heter: <b>SqlClient.SqlCommandBuilder</b>.

Sedan ska du låta denna commandbuilder bygga insert/update/delete åt dig.
Ungefär såhär:

<code>
'DA är din DataAdapter

Dim CmdBuild As New SqlClient.SqlCommandBuilder(DA)

DA.UpdateCommand = CmdBuild.GetUpdateCommand
'samma med insert/delete commands här.

'NU kommer förändrringarna kunna ske för nu vet DA hur den ska jobba.
DA.Update(DS, "testnamn")
</code>

med reservation för vissa fel, sitter inte med koden i huvudet, men det är det generella
tänket du borde förstå först.

MVH, Rickard


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-05 14:36:30 - Rickard Robin

Ola, Hörrö varför har detta:
objDS.Tables("resultat").Rows(2).AcceptChanges()

detta säger ju åt raden att få rowstate = notchanged

Alltså - adaptern kommer inte vilja synka denna rad med datakällan,
eftersom den tror att ingen förändring skett.
Vet inte omdet är det som är felet, möjligt.


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-05 14:46:24 - Rickard Robin

har skrivit en liten excel-fil wrapper, och lade in som "Tips" här på pellesoft, som du kan kolla på:

<url>http://www.pellesoft.se/communicate/tips/tips.aspx?tid=1934</url>


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-05 15:21:37 - Andreas Håkansson

Rickard,

Anledningen till att inte använda CommandBuilder är så många så... precis på väg hem från jobb så jag hinner inte specificera en lista, men en googling borde ge lite resultat för den intresserade.


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-05 15:21:39 - Andreas Håkansson

Rickard,

Anledningen till att inte använda CommandBuilder är så många så... precis på väg hem från jobb så jag hinner inte specificera en lista, men en googling borde ge lite resultat för den intresserade.


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-05 15:21:40 - Andreas Håkansson

Rickard,

Anledningen till att inte använda CommandBuilder är så många så... precis på väg hem från jobb så jag hinner inte specificera en lista, men en googling borde ge lite resultat för den intresserade.


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-05 15:55:02 - Ola Ljungcrantz

Tack Rickard för hjälpen!
Jag ska testa när jag kommer hem (och familjen har somnat).


Andreas Håkansson

Jag vet inte hur många timmar jag har försökt få detta att fungera……
Och jag skulle inte ha försökt?? Varför är det så farligt att skriva ett par rader kod? Det kan jag inte förstå. Det kommer jag mer än gärna att göra om ett år eller två då jag kommer att kunna mycket mer än jag kan idag.

Mvh Ola


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-05 17:33:41 - Andreas Håkansson

Ola,

Jag skriver gärna ett par rader kod när jag är övertygad om att personen verkligen har försökt, ta dig en titt i forumen så ska du se. Skriver till och med svar i både C# och VB.NET i samma trådar (ofta) om det är generella saker så som i ASP.NET Forumet.

Du visade kod, men inte den delen som visade att du var på gång med det som du ställde frågan om, inte heller någon som helst indikation på att hänvisningarna hade studerats och kunde ställa specifika frågor på det eller de moment som du inte riktigt fick rätt på - du bad om en hel lösning och det är jag inte intresserad av att ge direkt, dels för att med min svarsfrekevns så skulle jag få skriva hur mycket kod som helst på forumet, men även för att hjälpa.

Tänk på att prestationen skall ligga på dig och inte den som hjälper dig och det är därför att när man hjälper till på forumen så ser man gärna ett misslyckat försök, som man kan använda som en utgångspunkt, än en förfrågan på färdig kod.


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-05 18:12:27 - Ola Ljungcrantz

OK Andreas, men jag skrev ju faktiskt 20 rader kod som fungerar. De 20 -30 rader som jag testat på olika sätt var ju fel och tillförde inget som jag ser det. Jag var heller inte säker på att felet inte låg i de rader som jag skickade med. För att vara första gången jag försökte göra detta så kändes det som en stor prestation. Tack för hjälpen ändå!

mvh Ola


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-06 01:05:29 - Ola Ljungcrantz

Jag får det inte att fungera.
Får leta upp ett fungerande exempel.
Kanske är det för att jag använder excel som databas och att något måste ställas in rätt i den filen.

//Ola


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-06 01:08:45 - Ola Ljungcrantz

..


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-06 01:13:00 - Andreas Håkansson

Ola,

Vad är det som händer när du försöker? Får du något fel? Klipp isf in felmeddelandet samt den kod som orsakar felet.


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-06 14:44:47 - Ola Ljungcrantz

Tack Andreas för att du vill hjälpa mig!
Så här ser det ut:


Jag har skapat en vanlig Excel fil. Sedan har jag lagt till kolumn namnen genom
”Insert/Name/Define”
Det finns tre kolumner med namnen ”id” i A1, ”Namn” i B1 och ”Köp” C1
Kolumn A har formatet ”Number”. B och C formatet ”Text”

Det finns info i cellerna A,B,C2 och A,B,C3



felmeddelande:

An unhandled exception of type 'System.InvalidOperationException' occurred in system.data.dll

Additional information: Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.






Koden:

Dim Sql As String = "SELECT * FROM [info$]"
Dim objDS As New DataSet
Dim Connection As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\databas.xls;" & "Extended Properties=Excel 8.0;"
Dim objConn As New OleDb.OleDbConnection(Connection)
Dim objAdapter1 As New OleDb.OleDbDataAdapter(Sql, objConn)
Dim objTable As DataTable
Dim CmdBuild As New OleDb.OleDbCommandBuilder(objAdapter1)


Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub


Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Här Läses Data från Databasen

objDS.Clear()
objAdapter1.Fill(objDS, "resultat")


'Här lägger jag till info
objTable = objDS.Tables("resultat")
BindingContext(objDS, "resultat").Position = BindingContext(objDS, "resultat").Count - 1
Dim myRow As DataRow
myRow = objTable.NewRow()
myRow(0) = 2
myRow(1) = "bil"
myRow(2) = "200"
objTable.Rows.Add(myRow)
DataGrid1.SetDataBinding(objDS, "resultat")
MsgBox("hit fungerar det")

'Och här försöker jag spara allt i databasen
objAdapter1.UpdateCommand = CmdBuild.GetUpdateCommand
objAdapter1.Update(objDS, "resultat")
End Sub


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-06 14:50:36 - Andreas Håkansson

Ola,

Här är magin vi behövde!

<b>Additional information: Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.</b>

Eftersom du inte har någon kolumn som unikt kan identifera en rad, så vet heller inte ditt update kommando vilken/vilka rader den skall in och ändra i. Du behöver något som fungera på samma sätt som primärnykelfält gör i en databas tabell.

Jag skall precis gå utanför dörren, så jag hinner inte luska runt i excel just nu, men nu vet du vad du bör leta efter i excel (möjligheten att skapa en kolumn med unika värden) - annars får vi ta oss en titt senare när jag är hemma.


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-06 16:32:36 - Mikael Wedham

Jag har bestämt för mig att Excel inte stödjer DELETE, dessutom. Så det kan vara läge att byta databas.

/micke


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-07 14:30:53 - Ola Ljungcrantz

Ja, Mikael

Tänkte jag skulle vara lite smart och använda Excel eftersom det är ett program som jag redan använt en hel del. Det verkar ju dock som om jag gjort ett misstag. Ska läsa på lite om Access istället.
Återkommer om jag löser kopplingen mot Excel.
Det är fritt fram för alla som kan bidra med något

mvh Ola


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-07 15:19:16 - Mikael Johansson

En rekommendation är att köra mot sql. Du har MSDE ute som är gratis och snart kommer dessutom SQL 2005 Express, vilket man får hoppas blir gratis den med.


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-07 15:32:18 - Andreas Håkansson

Ola,

Ahh men Excel är ingen databas, det är ett kalkylprogram som det råkar finnas en ODBC provider för. Tanken är att man skall kunna använda det för automation, men det är inte på något sätt rekommonderatt att använda det som en datakälla, då är det minsta alternativer access - men som Hans säger så är MSDE ett bättre alternativ som är kostnadsfritt.


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-07 21:53:51 - Ola Ljungcrantz

OK
Så MSDE är mycket bättre än Access. Varför?

mvh Ola


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-07 22:47:27 - Andreas Håkansson

Ola,

MSDE är en mindre version av SQL-Server, vilket innebär att du t.ex kan använda dig av Stored Procedure för prestanda, säkerhet och inkapsling av logik.

<b>Mer information om MSDE2000</b>
http://www.microsoft.com/sql/msde/default.asp

<b>Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) version A</b>
http://www.microsoft.com/downloads/details.aspx?displaylang=sv&FamilyID=413744d1-a0bc-479f-bafa-e4b278eb9147


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-09 22:12:46 - Johan Birgersson

Du bör ta en koll på mySQL, den fungerar bra för de flesta applikationer.

/Johan


Svara

Sv: Hur uppdaterar man en databas?

Postades av 2005-01-09 23:22:48 - Anders Larsson

Håller med. mySql är ett utmärkt alternativ som är gratis. Du kan använda Providern ByteFX för att programmera ADO.Net med Adaptrar, DataSet etc. precis som mot en Sql Server eller Oledb-datakälla. ByteFX kan man ladda ner från mySql's hemsida http://www.mysql.com eller så finns den med i Mono, som är OpenSource portningen av .Net Framework http://go-mono.com


Svara

Sv:Hur uppdaterar man en databas?

Postades av 2005-01-09 23:55:54 - Per Persson

Gratis så länge man accepterar att licensiera sitt eget program under GPL (om man distribuerar det) och inte vill stödja utvecklingen av denna utmärkta programvara.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 606
27 953
271 705
472
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies