[VB.NET/SQLCE] Regional Settings bij importen data*

Pagina: 1
Acties:

  • NoFate
  • Registratie: Januari 2003
  • Laatst online: 06-05 17:23
Hallo beste mensen

Ik ben een applicatie in vb.net aan het maken voor op een pocket pc.
Ik werk dus ook met een sqlce server.

Hoe ik te werk ga :

Ik heb een txt bestand waar data instaat , deze importeer ik naar mijn sqlce database

Maar mijn region settings zijn dus niet in order

dus bv :

Ik heb in mijn data.txt het getal 21,57 staan , in mijn sqlce server komt dus 2157
21.57 zet hij dan in 21,57

Ik werk dus op deze manier :
code:
1
2
3
4
5
6
7
8
9
10
Dim reader As System.IO.StreamReader
            reader = File.OpenText(appPath + dataArtikelen)
            Dim tokenstr As String
            Dim tokens() As String
            While reader.Peek() <> -1
                tokenstr = reader.ReadLine()
                tokens = tokenstr.Split(vbTab)
                insertArtikelen(tokens(0), .......)

            End While


insertArtikelen is een functie die ik gebruik om een rij in een sqlce db te plaatsen

Hulp zou echt welkom zijn :-)

Bedankt hoor!

[ Voor 1% gewijzigd door whoami op 17-06-2005 15:17 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 06-05 15:36
*) maak gebruik van parametrized queries om de gegevens in je DB te stoppen.
*) Kijk ook eens naar de System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat property.
*) gebruik aub code-tags als je een stuk code post. Ik heb het nu ff voor jou aangepast.

[ Voor 21% gewijzigd door whoami op 17-06-2005 15:17 ]

https://fgheysels.github.io/


  • NoFate
  • Registratie: Januari 2003
  • Laatst online: 06-05 17:23
ah ok

bedankt hoor!!

ook nog even een toevoeging

Waneer ik dus data ga inserten , dan komt sql ook natuurlijk melken :))


bv insert into data ("prijs") values (21,57)

Dan zegt hij natuurlijk dat de kolommen niet overeenkomen :)

  • NoFate
  • Registratie: Januari 2003
  • Laatst online: 06-05 17:23
whoami schreef op vrijdag 17 juni 2005 @ 15:16:
*) maak gebruik van parametrized queries om de gegevens in je DB te stoppen.
*) Kijk ook eens naar de System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat property.
*) gebruik aub code-tags als je een stuk code post. Ik heb het nu ff voor jou aangepast.
Kan je dit even uitleggen met een voorbeeld , ik ben echt nog een newbie met programmeren hoor :-)

Bedankt!!

  • whoami
  • Registratie: December 2000
  • Laatst online: 06-05 15:36
Wat heb ik net gezegd over code - tags ?
Wat doen die quotes rond prijs ?
Gebruik je parametrized queries ?
Hoe bouw je je queries op ?

Kortom, geef eens wat meer relevante informatie, want zo kunnen we jou gewoon niet helpen. Mag ik je er verder ook eens op wijzen dat P&W een 'forum' is, waar we een wisselwerking verwachten ? We verwachten dus ook een beetje inzet van jouw kant.
NoFate schreef op vrijdag 17 juni 2005 @ 15:23:
[...]


Kan je dit even uitleggen met een voorbeeld , ik ben echt nog een newbie met programmeren hoor :-)

Bedankt!!
Ik heb je een aantal tips / steekwoorden gegeven, en daarmee moet je toch wel een stuk verder kunnen hoor.
Zoek voor de gein eens op 'parametrized queries' in google, of bekijk de P&W FAQ eens; onder de rubriek SQL vind je een heel stuk uitleg over PQ's.
Kijk eens in de MSDN naar die CurrentCulture property van de Thread class; etc....

[ Voor 46% gewijzigd door whoami op 17-06-2005 15:25 ]

https://fgheysels.github.io/


  • NoFate
  • Registratie: Januari 2003
  • Laatst online: 06-05 17:23
code:
1
2
3
4
5
6
7
8
9
10
Dim reader As System.IO.StreamReader
            reader = File.OpenText(appPath + dataArtikelen)
            Dim tokenstr As String
            Dim tokens() As String
            While reader.Peek() <> -1
                tokenstr = reader.ReadLine()
                tokens = tokenstr.Split(vbTab)
                insert into artikelen (prijs) values (tokens(0) )

            End While


tokens(0) is dus een string die hij uitleest van een bestand
Stel dat er 100,21 inzit dan maakt hij er 10021 van
Als er bv 100.21 inzit, dan zet hij dit wel goed in de database

Groetjes

  • whoami
  • Registratie: December 2000
  • Laatst online: 06-05 15:36
Je gaat mij niet zeggen dat de code die jij gepost hebt compileert.

https://fgheysels.github.io/


  • NoFate
  • Registratie: Januari 2003
  • Laatst online: 06-05 17:23
whoami schreef op vrijdag 17 juni 2005 @ 15:48:
Je gaat mij niet zeggen dat de code die jij gepost hebt compileert.
Nee idd

Ik heb de functie er tussenuit gezwiert van het insert commando

Dit is toch niet relevant , daarom heb ik er nu even deze regel gezet :

code:
1
insert into artikelen (prijs) values (tokens(0)

  • whoami
  • Registratie: December 2000
  • Laatst online: 06-05 15:36
Het is wel relevant, want ik vraag je hoe je die query precies opbouwt ?
En hoe haal je die getallen uit die string ? Hoe converteer je die getallen ?

https://fgheysels.github.io/


  • NoFate
  • Registratie: Januari 2003
  • Laatst online: 06-05 17:23
code:
1
2
3
4
5
6
7
8
9
10
11
12
            Dim reader As System.IO.StreamReader
            reader = File.OpenText(appPath + dataArtikelen)
            Dim tokenstr As String
            Dim tokens() As String
            While reader.Peek() <> -1
                tokenstr = reader.ReadLine()
                tokens = tokenstr.Split(vbTab)
                insertArtikelen(tokens(0), tokens(1), tokens(2), tokens(3), tokens(4), tokens(5), tokens(6))

            End While

            reader.Close()


functie insertArtikelen =

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 Function insertArtikelen(ByVal artikelgroep As String, ByVal artikelnr As String, ByVal naam As String, ByVal barcodenr As String, ByVal prijs As String, ByVal btwcode As String, ByVal aantal As String)

        Dim connstr As String

        conn = New SqlCeConnection(connStrArtikelen)
        conn.Open()

        Dim dmlInsertPackage As String
        dmlInsertPackage = "INSERT INTO artikelen(artikelgroep , artikelnr , naam , barcodenr , prijs , btwcode , aantal ) VALUES ('" + artikelgroep + "', '" + artikelnr + "', '" + naam + "', '" + barcodenr + "', '" + prijs + "', '" + btwcode + "', '" + aantal + "')"

        Dim cmdInsertPackage As SqlCeCommand
        cmdInsertPackage = New SqlCeCommand(dmlInsertPackage, conn)

        Try
            cmdInsertPackage = New SqlCeCommand(dmlInsertPackage, conn)
            cmdInsertPackage.CommandType = CommandType.Text
            cmdInsertPackage.ExecuteNonQuery()
        Catch scee As SqlCeException
            Dim curNdx As Int32
            For curNdx = 0 To scee.Errors.Count
                MessageBox.Show("Error:" & scee.Errors(curNdx).ToString())
            Next

        Finally
            If Not cmdInsertPackage Is Nothing Then
                cmdInsertPackage.Dispose()
            End If
        End Try

        conn.Close()
    End Function

  • whoami
  • Registratie: December 2000
  • Laatst online: 06-05 15:36
- Waarom zet je numerieke waarden in je insert query tussen quotes ?
- Waarom convert je de gegevens niet naar de gewenste datatypes (met behulp van de current numberformatinfo) ?
- Waarom gebruik je geen parametrized queries ?

https://fgheysels.github.io/

Pagina: 1