Toon posts:

[asp.net & SQL] Update probleem

Pagina: 1
Acties:
  • 59 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb een datalist gemaakt met editTemplates,

Ik snap alleen niet hoe ik vanuit de te editten textvelden, een update command kan maken

Mijn update functie:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 Sub MyDataList_Update(Sender As Object, E As DataListCommandEventArgs)
    
        objConn.Open()
        objAdapter.Fill(ds, "Aanbiedingen")
    
    
        Dim eNaambedrijf As HtmlInputText
        Dim eKorteomschrijving As HtmlInputText
        Dim eContactpersoon As HtmlInputText
        Dim eOmschrijving As HtmlInputText
        eNaambedrijf = E.Item.FindControl("edit_naambedrijf")
        eKorteomschrijving = E.Item.FindControl("edit_korteomschrijving")
        eContactpersoon = E.Item.FindControl("edit_contactpersoon")
        eOmschrijving = E.Item.FindControl("edit_omschrijving")
    
        sqlstr3 = "UPDATE aanbiedingen SET NaamBedrijf ='" & _ eNaambedrijf.value"', KorteOmschrijving = '" _ & eKorteomschrijving.value & _ "', Contactpersoon = '" & _ eContactpersoon.value & _ "', Omschrijving = '" & _ eOmschrijving.value & _ "' WHERE ID = '" & _ (CInt(e.Item.ItemIndex)) "'"
    
        Dim objCommand3 = New OLEDBCommand(sqlstr3, objConn)
    
        objCommand3.ExecuteNonQuery()
        ds.Tables.Clear
        objAdapter.Fill(ds, "Aanbiedingen")
    end sub


Mijn editTemplate

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
<EditItemTemplate>
                    <table cellpadding="10" style="font: 10pt verdana">
                        <tr>
                            <td width="1" bgcolor="BD8672" />
                            <td valign="top">
                                [img]'<%#[/img]' width='200' height='150' /> 
                            </td>
                            <td valign="top">
                                <b>Naam Bedrijf: </b> 
                                <input id="edit_naambedrijf" type="text" value='<%# DataBinder.Eval(Container.DataItem, "NaamBedrijf") %>' runat="server" />
                                <br />
                                <b>Korte Omschrijving: </b> 
                                <input id="edit_korteomschrijving" type="text" value='<%# DataBinder.Eval(Container.DataItem, "korteOmschrijving") %>' runat="server" />
                                <br />
                                <b>ContactPersoon: </b> 
                                <input id="edit_contactpersoon" type="text" value='<%# DataBinder.Eval(Container.DataItem, "ContactPersoon") %>' runat="server" />
                                <br />
                                <b>Omschrijving: </b> 
                                <input id="edit_omschrijving" type="text" value='<%# DataBinder.Eval(Container.DataItem, "Omschrijving") %>' runat="server" />
                                <p>
                                    <asp:linkbutton CommandName="Update" runat="server">
                                        [img]"images/update.jpg"[/img] 
                                    </asp:LinkButton>
                                    <asp:linkbutton CommandName="Cancel" runat="server">
                                        [img]"images/edit.jpg"[/img] 
                                    </asp:Linkbutton>
                                </p>
                            </td>
                        </tr>
                    </table>
                </EditItemTemplate>


het gaat fout bij het sql commando (sqlstr3), volgens mij door het where stukje van de string.

alvast bedankt

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:08

gorgi_19

Kruimeltjes zijn weer op :9

Maak om te beginnen eens een geldige string...

code:
1
2
3
Dim a as string = "blaat"
Dim b as string
b = "blaat " & a & "ikke"

Je mag zelf vergelijken wat het verschil is met jouw string.
Verder: gooi die string eens in je tracing / scherm; geeft ook wel wat meer info. En een precieze foutmelding doet voor ons ook wonderen.. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
alleen de _ 's?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:08

gorgi_19

Kruimeltjes zijn weer op :9

Onder andere... Mis nog een ander karakter....

En waarom werk je met HTMLInputText en niet met Textboxes?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
okee. ik heb nu de string veranderd in

code:
1
sqlstr3 = "UPDATE aanbiedingen SET NaamBedrijf ='" &  edit_naambedrijf.Text & "', KorteOmschrijving = '"  & edit_korteomschrijving.Text &  "', Contactpersoon = '" &  edit_contactpersoon.Text &  "', Omschrijving = '" & edit_omschrijving.Text & "' WHERE ID = '" & (CInt(e.Item.ItemIndex)) & "'"


en alle inputs in de edit template veranderd in asp:textbox

nu krijg ik de error dat ie die Textboxes niet kent: "Name 'edit_naambedrijf' is not declared."

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:08

gorgi_19

Kruimeltjes zijn weer op :9

Je noemt je variabele:
eNaambedrijf
Maar je wilt uitlezen uit de variabele:
edit_naambedrijf
Als je het niet volgt, moet je het even zeggen, dan geef ik een korte uitleg.. :P
(* gorgi_19 is in een goede bui vandaag.. :P )

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
dat is de naam van de textbox in de edittemplate

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 Sub MyDataList_Update(Sender As Object, E As DataListCommandEventArgs)
    
        objConn.Open()
        objAdapter.Fill(ds, "Aanbiedingen")
    
    
        sqlstr3 = "UPDATE aanbiedingen SET NaamBedrijf ='" &  edit_naambedrijf.Text & "', KorteOmschrijving = '"  & edit_korteomschrijving.Text &  "', Contactpersoon = '" &  edit_contactpersoon.Text &  "', Omschrijving = '" & edit_omschrijving.Text & "' WHERE ID = '" & (CInt(e.Item.ItemIndex)) & "'"
    
        Dim objCommand3 = New OLEDBCommand(sqlstr3, objConn)
    
        objCommand3.ExecuteNonQuery()
        ds.Tables.Clear
        objAdapter.Fill(ds, "Aanbiedingen")
    end sub


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
<EditItemTemplate>
                    <table cellpadding="10" style="font: 10pt verdana">
                        <tr>
                            <td width="1" bgcolor="BD8672" />
                            <td valign="top">
                                [img]'<%#[/img]' width='200' height='150' /> 
                            </td>
                            <td valign="top">
                                <b>Naam Bedrijf: </b> 
                                <asp:textbox id="edit_naambedrijf" type="text" value='<%# DataBinder.Eval(Container.DataItem, "NaamBedrijf") %>' runat="server" />
                                <br />
                                <b>Korte Omschrijving: </b> 
                                <asp:textbox id="edit_korteomschrijving" type="text" value='<%# DataBinder.Eval(Container.DataItem, "korteOmschrijving") %>' runat="server" />
                                <br />
                                <b>ContactPersoon: </b> 
                                <asp:textbox id="edit_contactpersoon" type="text" value='<%# DataBinder.Eval(Container.DataItem, "ContactPersoon") %>' runat="server" />
                                <br />
                                <b>Omschrijving: </b> 
                                <asp:textbox id="edit_omschrijving" type="text" value='<%# DataBinder.Eval(Container.DataItem, "Omschrijving") %>' runat="server" />
                                <p>
                                    <asp:linkbutton CommandName="Update" runat="server">
                                        [img]"images/update.jpg"[/img] 
                                    </asp:LinkButton>
                                    <asp:linkbutton CommandName="Cancel" runat="server">
                                        [img]"images/edit.jpg"[/img] 
                                    </asp:Linkbutton>
                                </p>
                            </td>
                        </tr>
                    </table>
                </EditItemTemplate>


zo is het nu

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:08

gorgi_19

Kruimeltjes zijn weer op :9

Waarom gooi je nu opeens je variabelen weg? :?

code:
1
2
3
4
5
Dim eContactpersoon as Textbox
' Declare variabele eContactpersoon as type Textbox
eContactpersoon = E.Item.FindControl("edit_contactpersoon")
' Fill variabele eContactpersoon withe the control edit_contactpersoon
' From this moment, we can use variabel eContactpersoon.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
ja vaag he, ik heb op dezelfde pagina de mogelijk heid om records toe te voegen aan een database gemaakt en daarbij gebruik ik in het sql commando ook gewoon textveld.Text enz. Het enige verschil is dat deze textboxen in een form staan.

code:
1
2
3
4
5
 sqlstr2 = "INSERT INTO aanbiedingen (NaamBedrijf, KorteOmschrijving, Contactpersoon, Omschrijving) VALUES " & _
        "('"& bedrijfsnaam.Text & "'," & _
        "'" & KOmschrijving.Text & "'," & _
        "'" & contactpersoon.Text & "', " & _
        "'" & Omschrijving.Text & "')"

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:08

gorgi_19

Kruimeltjes zijn weer op :9

Goed, simpelweg uitlegd: Je declared een variabele econtactpersoon als het type textbox. Deze textbox is het zelfde als de gevonden control (e.item.findcontrol) met de naam ("edit_contactpersoon"). Je moet dan vanaf dat moment de variabele gebruiken en niet de control aanroepen.

Maar erhm... nofi hoor.. Volgens mij moet je eerst nog even rustig de basics doorkijken en strings opbouwen voordat je met databases aan de gang gaat. Want ik heb het idee dat je nog geen idee hebt waar je mee bezig bent...

[disclaimer]
Voordat iedereen mij er op gaat aanvallen: ja, je kan hem wel direct aanspreken met
Ctype(e.item.Findcontrol("edit_Contactpersoon"),Textbox).text
:P
[/disclaimer]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Niet geen idee, maar veel weet ik nog niet nee...
Thanx voor de moeite alvast :)

code:
1
2
3
4
5
6
7
8
9
10
Dim eNaambedrijf As Textbox
        Dim eKorteomschrijving As Textbox
        Dim eContactpersoon As Textbox
        Dim eOmschrijving As Textbox
        eNaambedrijf = E.Item.FindControl("edit_naambedrijf")
        eKorteomschrijving = E.Item.FindControl("edit_korteomschrijving")
        eContactpersoon = E.Item.FindControl("edit_contactpersoon")
        eOmschrijving = E.Item.FindControl("edit_omschrijving")
        
        sqlstr3 = "UPDATE aanbiedingen SET NaamBedrijf ='" &  eNaambedrijf.Text & "', KorteOmschrijving = '"  & eKorteomschrijving.Text &  "', Contactpersoon = '" &  eContactpersoon.Text &  "', Omschrijving = '" & eOmschrijving.Text & "' WHERE ID = '" & (CInt(e.Item.ItemIndex)) & "'"


zo dus, alleen nu heb ik mijn WHERE stukje nog niet goed denk ik... Tijdens het uitvoeren van de query, zegt ie :' Data type mismatch in criteria expression.'

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 12:08

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 geeft nu echt de allerlaatste tip......

String != integer

Hoe geef je in een SQL statement een string aan? En hoe geef je in een sql statement een integer aan?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • D2k
  • Registratie: Januari 2001
  • Nu online

D2k

wmb genoeg tips voor weken leerplezier

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.