Tips på hur man läser in data från formuläret till databasen mottages tacksamt.
Har en mängd olika webbkontroller som jag ska utläsa data ifrån
och när jag trycker på Skicka knappen vill jag att INSERT-queryn ska köras. Hur gör jag?
Vad har uttrycket ' " & strNamn & " ' ersatts av i .NET?
Data från formuläret läses genom att läsa från rätt kontroll. Antag t.ex. att du vill läsa av innehållet i en TextBox tb. Innehållet når du då genom tb.Text.
Den kod du vill ska köras när man klickar på knappen lägger du i knappens Click-event. Kör du VS .Net, så gå in under eventfliken på knappen (ser ut som en blixt), och dubbelklicka så skapas en funktion åt dig. Kod för hur man kör SQL-kommandon, t.ex. INSERT, hittar du nog i andra inlägg i detta forum.
ja, jag har tänkt mig det hela just så - när jag trycker på min submitknapp ska jag både kolla att alla fält är korrekt ifyllda samt köra INSERT-satsen.
Letar desperat efter den där blixt-knappen men jag hittar inte på den - ligger den i Proportis-fönstret?
Jag vore själaglad om någon vänlig människa ville visa mig ett kodexempel...
Använd validationcontrols för att kolla om fälten är rätt ifyllda, dessa fixar detta på KLIENTEN så du slipper en roundtrip tillbaka till servern). Du hittar de olika validatorerna under webforms i din toolbox, exempelvis RequiredFieldValidator. Om du ska göra kontroller mot befintliga data i din databas så måste du dock göra det serverside av naturliga skäl...
När du har validerat dina kontroller så hoppar du in i din funktion där du kör din insertsats. Dubbelklicka bara på din button i designläget så skapas funktionen automatiskt. Du kan göra det manuellt också, antingen genom en OnCLick i kontrollen (funkar inte riktigt på samma sätt!) eller under "blixtknappens" onclick i properties-fönstret. Beroende på vilken databas och teknik du vill använda så kan en insert se olika ut varav två exempel finns listade ovan.
Ta bort knappen och börja om. I din toolbox, dra ut en "Button" på din sida i designläget. Dubbelklicka på den så kommer du att hamna i en nyskapad funktion i din kod-fil. Skriv någon enkel test-kod här (Response.Write("hej") och kompilera. Kör sidan och prova att du kommer in och kör funktionen när du klickar på knappen. Det bör du göra...
Ska du fylla ett dataset med flera tabeller så måste du ställa en ny fråga för varje tabell.
Verkar mysko. Men som sagt, prova istället att välja Properties för knappen och gå till fliken events (blixten). Dubbelklicka på OnClick. Då borde en ny metod skapas åt dig.
(Fungerar det fortfarande inte, så lägg till i asp:button-taggen: OnClick="funktionsNamn")
Hur skriver man Insertsatsen om Values är av flera typer (string & bool & int)?
Det är inga konstigheter, du kan blanda hur du vill. Skillnaden ligger i sql, en sträng ska sparas mellan ' ' - tecken, en int ska inte det. Typ. Det finns ett väldigt trevligt sql-forum där du kan få mycket bättre hjälp med detta! :)
INSERT INTO Tabell (bool, string, int) values ("+bool+", '"+string+"', "+int+")
så sql-satsen ska alltid omgärdas med string.format ('här
står queryn') - oavsett om den innehåller variabler med t.ex int (tänkte på exemplet med Date här ovan)??
För varje kontaktunering du gjorde var applikationen tvungen att skapa en ny plats i minnet för att kunan slå ihop de olika strängarna och variablerna. Detta var förstås väldigt minnes-krävande (särskilt vid loopar) och onödigt.
I .NET finns det flera sätt att arbeta med strängar. Ett sätt är alltså "String.Format()" som låter dig skriva en sträng och sätta {*tal*} för varje variabel du vill använda.
Ex:
dim strName as string = "Fredrik"
dim strLanguage as string = "VB"
dim strWelcome = String.Format("Välkommen {0} som kodar {1}!", strName, strLanguage)
Detta resulterar alltså i "Välkommen Fredrik som kodar VB!"
Då "strName" är den första variablen som skickas med efter strängen är fylls den i utrymmet döpt {0} (index 0-baserad) och "strLanguage" i {1} osv.
Det har alltså inte speciellt något att göra med SQL, utan är bara till för att underlätta skapande av SQL-strängen. Vill du hårdkoda vissa värden kan du skriva:
dim strSQL = String.Format("INSERT INTO tblTable (ID, Name) VALUES ({0},'EGET VÄRDE')", lngID)
Andra metoder för just konkatunering är "String.Concat" eller att helt enkelt använda "StringBuilder"-klassen i "System.Text" som är byggt för lite större sträng-hantering.
om vi nu ska fortsätta på den pedagogiska banan, hur hade du kodat för att skriva "Välkommen Fredrik 23 år som kodar VB"? Alltså, blir det något problem med String.Format när man blandar string och int..eller kan man skriva något i denna stil?
dim strName as string = "Fredrik"
dim intAlder as int = "23"
dim strLanguage as string = "VB"
dim strWelcome = String.Format("Välkommen {0} {1} år som kodar {2}!", strName, intAlder, strLanguage)
dim strNamn = DDL.Namn.Value //värdet från en drop-downlist
dim intAlder = tb.Alder.Value //värdet från en textbox
dim strSQL = String.Format("INSERT INTO tblTable (name, age) VALUES ({0},{1})", strNamn, intAlder)
(sorry att jag frågar så mycket, jag är otroligt glad att ni står ut med mig!!)