Avatar billede drakwing Nybegynder
10. juni 2003 - 19:30 Der er 18 kommentarer og
1 løsning

endnu et SQL streng problem

ok så fik jeg hjælp til min delete string, så driller min update selvfølgelig

Så hvis nogen kan hjælpe så please

    Dim    MySQLstr = "UPDATE produkter SET " & _
    "navn = '" & E.Item.Cells(1).Text & "', " & _
    "alder = '" & E.Item.Cells(2).Text & "' " & _
    "WHERE Id = " & E.Item.Cells(3).Text

Eller er der en bedre måde, synes selv det kommer til at se lidt rodet ud ?
Avatar billede eagleeye Praktikant
10. juni 2003 - 19:45 #1
Får du en fejl? Hvis alder er en tal kolonne skal der ikke ' omkring.

Alterntivt kan du skrive din SQL sådan her:


Dim    MySQLstr = "UPDATE produkter SET "
MySQLstr = MySQLstr & "navn = '" & E.Item.Cells(1).Text & "', "
MySQLstr = MySQLstr & "alder = " & E.Item.Cells(2).Text & " "
MySQLstr = MySQLstr & "WHERE Id = " & E.Item.Cells(3).Text
Avatar billede drakwing Nybegynder
10. juni 2003 - 19:53 #2
får stadig fejl

ERROR [42000] [MySQL][ODBC 3.51 Driver][mysqld-4.0.13-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE Id =' at line 1

et eller andet er galt med id ser ud som om den ikke kommer med
og jo alder var et tal, så den fejl er nu rettet
Avatar billede drakwing Nybegynder
10. juni 2003 - 19:55 #3
Sært for min "WHERE Id = " & E.Item.Cells(3).Text virker fint i min delete string
Avatar billede odegaard Nybegynder
10. juni 2003 - 20:10 #4
Væn dig selv til at skrive dine SQL-strenge ud, så du kan se om de genererer noget forkert, som man ikke lige kan gennemskue direkte i koden.
Det er typisk det der sker i ~95% af tilfældende.

Prøv fx. Response.Write(MySQLstr)
og afbryd derefter funktionen så den ikke fejler.
Avatar billede drakwing Nybegynder
10. juni 2003 - 20:34 #5
jo tak det er en god ide, men desværre hjælper det ikke ret meget lige her, for jeg kan ikke forstå hvorfor min "id" ikke bliver taget med
Avatar billede odegaard Nybegynder
10. juni 2003 - 20:40 #6
Fordi den ikke indeholder noget?
Avatar billede drakwing Nybegynder
10. juni 2003 - 20:48 #7
jep
Avatar billede drakwing Nybegynder
10. juni 2003 - 20:49 #8
men som skrevet
Sært for min "WHERE Id = " & E.Item.Cells(3).Text virker fint i min delete string

her indeholder id en værdi
Avatar billede odegaard Nybegynder
10. juni 2003 - 23:11 #9
Så har fejlen jo intet at gøre med din SQL-streng, og ovenstående kode-udsnit er ikke til meget hjælp.
Det kan godt være det virker i din delete-funktion, men jeg går ud fra at den foregår et andet sted i koden, hvorfor du jo ikke kan være sikker på at e.Item.Cells indeholder det samme.
Avatar billede drakwing Nybegynder
10. juni 2003 - 23:19 #10
Public Sub DataGrid_Update(Source As Object, E As DataGridCommandEventArgs)
':::::::::::::::::::::::::Her en en dns-less connection
    Dim sConnectString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=test;Option=16834"
    Dim MyConnection As New OdbcConnection(sConnectString)
    MyConnection.Open()
   
    Dim txtnavn As TextBox = E.Item.Cells(1).Controls(0)
    Dim txtalder As TextBox = E.Item.Cells(2).Controls(0)
    Dim txtID As TextBox = E.Item.Cells(3).Controls(0)
   
    Dim    MySQLstr = "UPDATE test SET "
    MySQLstr = MySQLstr & "navn = '" & txtnavn.Text & "', "
    MySQLstr = MySQLstr & "alder = " & txtalder.Text & " "
    MySQLstr = MySQLstr & "WHERE Id = " & txtID.Text

    Response.Write(MySQLstr)

    Dim MyOdbcCommand = New OdbcCommand(MySQLstr, MyConnection)   
    'MyOdbcCommand.ExecuteNonQuery()
    MydataGrid.EditItemIndex = -1
    MyConnection.Close()
    BindData("navn DESC")
End Sub
Avatar billede drakwing Nybegynder
10. juni 2003 - 23:22 #11
og


Sub DeleteRecord(Source As Object, E As DataGridCommandEventArgs)
':::::::::::::::::::::::::Her en en dns-less connection
    Dim sConnectString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=test;Option=16834"
    Dim MyConnection As New OdbcConnection(sConnectString)
    MyConnection.Open()

':::::::::::::::::::::::::slet en record
    Dim MySQLstr = "DELETE  from test WHERE id ="  & E.Item.Cells(3).Text
    Dim MyOdbcCommand = New OdbcCommand(MySQLstr, MyConnection)   
    MyOdbcCommand.ExecuteNonQuery()
    MyConnection.Close()
    BindData("navn DESC")
End Sub
Avatar billede drakwing Nybegynder
10. juni 2003 - 23:22 #12
kan ikke selv se forskellen ?
Avatar billede odegaard Nybegynder
10. juni 2003 - 23:59 #13
Indeholder txtID den rigtige værdi?
Avatar billede drakwing Nybegynder
11. juni 2003 - 08:03 #14
nej det er jo det der er problemet - og selv om jeg skriver...
WHERE id ="  & E.Item.Cells(3).Text istedet virker det heller ikke,
så af en eller anden grund er E.Item.Cells(3).Text tom
Avatar billede odegaard Nybegynder
11. juni 2003 - 09:07 #15
nu har du vel ikke en databind i page_load-eventet som også bliver udført ved postback?
Avatar billede odegaard Nybegynder
11. juni 2003 - 09:08 #16
Iøvrigt er den korrekte syntax:
Dim txtnavn As TextBox = CType(e.Item.Cells(1).Controls(0), TextBox)
Avatar billede drakwing Nybegynder
11. juni 2003 - 11:03 #17
nej min databind bliver kun udført ved If Not Page.IsPostBack
det var ellers noget af en kompliceret "korrekt syntax" (-:
Avatar billede odegaard Nybegynder
11. juni 2003 - 18:32 #18
Sådan er det nu beskrevet i alle eksemplerne i SDK'en.
Hvis du vil have det simplere må du skifte til C#:
TextBox txtnavn = (TextBox)e.Item.Cells[1].Controls[0];
Avatar billede drakwing Nybegynder
14. juni 2003 - 17:17 #19
hmm løste det selv til sidst
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester