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


Klickar på sänd och inget händer i Access db

Postades av 2004-06-01 23:14:06 - Gert Lindholm, i forum asp.net generellt, Tråden har 16 Kommentarer och lästs av 694 personer

Hej jag har knåpat ihop en webbsida i Visual Studio och C#.
Ett inmatningsformulär med code behind.
När jag klickar på skicka så uppdateras sidan men ingen data överförs till Access db.

Kan nån se vad jag har gjort för fel.

Här är koden:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace berlingolf
{
/// <summary>
/// Summary description for NyKund.
/// </summary>
public class AddNyKund : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button RegisterBtn;
protected System.Web.UI.WebControls.Table Table1;
protected System.Web.UI.WebControls.Literal ltlError;
protected System.Web.UI.WebControls.Table TableNewKund;

public AddNyKund()
{
//Page.Init += new System.EventHandler(Page_Init);
}
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here

}

private void RegisterBtn_Click(int KlubbNr, string KlubbNamn)
{

string SqlCmd = "INSERT INTO Kunder(Klubbnr, KlubbNamn) VALUES (@KlubbNr,'@KlubbNamn')";
OleDbConnection myConn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("db/BerlinGolf.mdb"));

OleDbCommand myCmd = new OleDbCommand(SqlCmd,myConn);
myCmd.Parameters.Add(new OleDbParameter("@KlubbNr", OleDbType.Integer,10));
myCmd.Parameters["@KlubbNrVal"].Value = KlubbNr ;
myCmd.Parameters.Add(new OleDbParameter("@KlubbNamn", OleDbType.VarChar,50));
myCmd.Parameters["@KlubbNamnVal"].Value = KlubbNamn ;

myCmd.Connection.Open();
try
{
ExecuteNonQuery(SqlCmd);
//Response.Write SqlCmd;
//Response.End;
}
finally
{

myCmd.Connection.Close();
}

}
private void ExecuteNonQuery(string SqlCmd)
{
OleDbConnection conn = null;
try
{
conn = new OleDbConnection(
@"Provider=Microsoft.Jet.OLEDB.4.0; " +
@"Data Source=" + Server.MapPath("db/BerlinGolf.mdb"));
conn.Open();

OleDbCommand cmd =
new OleDbCommand(SqlCmd, conn);
cmd.ExecuteNonQuery();
}

finally
{
if (conn != null) conn.Close();
}
}


#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.ID = "AddNyKund";
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion


}
}

Tack på förhand
Gert


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-02 10:56:01 - Raderat konto

Jag förstår inte riktigt uppdelningen du gjort i 2 metoder. I princip gör du samma sak två gånger. Försök detta först:

        private void RegisterBtn_Click(int KlubbNr, string KlubbNamn) 
        { 
            
            string SqlCmd = "INSERT INTO Kunder(Klubbnr, KlubbNamn) VALUES (@KlubbNr, @KlubbNamn)"; 
            OleDbConnection myConn = new OleDbConnection( 
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("db/BerlinGolf.mdb")); 
        
            OleDbCommand  myCmd = new OleDbCommand(SqlCmd,myConn); 
            myCmd.Parameters.Add(new OleDbParameter("@KlubbNr", OleDbType.Integer, 10)); 
            myCmd.Parameters["@KlubbNrVal"].Value = KlubbNr ; 
            myCmd.Parameters.Add(new OleDbParameter("@KlubbNamn", OleDbType.VarChar, 50)); 
            myCmd.Parameters["@KlubbNamnVal"].Value = KlubbNamn ; 
            
            //try 
            //{ 
                myConn.Open();
                myCmd.ExecuteNonQuery();
            //} 
            //finally 
            //{ 
            
                myConn.Close(); 
            //} 
            
        } 

Som du ser har jag kommenterat ut felhanteringen. Detta gör jag för att eventuella felmeddelanden skall synas om saker o ting inte går som jag tänkt mig. Ta bort kommenteringen när det funkar enligt plan. Ta också bort fnuttarna runt @KlubbNamn i sql satsen. De behövs inte när du använder parametrar.


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-02 17:54:44 - Gert Lindholm

Tack adec för att du tog dig tid, men fortfarande so jobbar sidan men inget kommer till databasen. Jag får inga som helst felmeddelanden att något är galet heller.


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-02 18:11:07 - Jarl Enqvist

Gerten,

Jag har ofta fått detta fel (Visual Studio 2002) på just Buttons eller LinkButtons. Av någon anledning verkar click_eventet "disablas" när man gjort vissa ändringar i designläge (bugg???). Jag brukar då:
1. Kopiera koden för click_eventet
2. Radera click_event koden
3. Skapa ett nytt click_event
4. Klistra tillbaka koden.

Då brukar det funka igen.

Hoppas detta löser ditt problem.

/Jalle


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-02 18:37:27 - Gert Lindholm

Hej Jalle.

Jag har Visual Studio 2003, vet inte om det är ngn skillnad eller om buggen fortfarande är kvar.

Det hjälpte iofs inte med det som du skrv. Tror jag börjar få tunnelseende.

Gert


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-02 19:35:27 - Patrik Dahlén

1. För att se om knappen verkligen aktiverar funktionen kan du lägga en response.write i funktionen. Om det skrivs ut körs funktionen och om det inte skrivs ut så körs den inte.

2. Har du någon event för OnClick på knappen så att den verkligen vet om att den ska köra funktionen. Antingen lägger du OnClick="RegisterBtn_Click" i din kontrolltagg eller så lägger man till en EventHandler för knappen och jag ser inte någon sådan i din kod.
Utan en eventhandler så körs ingen kod när man trycker på knappen.

/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nu


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-02 21:53:38 - Gert Lindholm

Nu har jag lagt till en EventHandler för knappen AddBtn, men får följande felmedd:

The class 'berlingolf.NyKund' already contains a definition for 'AddBtn'

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace berlingolf
{
/// <summary>
/// Summary description for NyKund.
/// </summary>
public class NyKund : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Table TableNewKund;
protected System.Web.UI.WebControls.Button AddBtn;
protected System.Web.UI.WebControls.Table Table1;
protected System.Web.UI.WebControls.Literal ltlError;

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}


#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void AddBtn(object sender, System.EventArgs e)
{
string SqlCmd = "INSERT INTO Kunder(KlubbNr, KlubbNamn) VALUES (@KlubbNrVal, @KlubbNamnVal)";
OleDbConnection myConn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + HttpContext.Current.Server.MapPath("dbs/BerlinGolf.mdb"));

OleDbCommand myCmd = new OleDbCommand(SqlCmd,myConn);
myCmd.Parameters.Add(new OleDbParameter("@KlubbNrVal", OleDbType.Integer, 10));
myCmd.Parameters["@KlubbNrVal"].Value = KlubbNr ;
myCmd.Parameters.Add(new OleDbParameter("@KlubbNamnVal", OleDbType.VarChar, 50));
myCmd.Parameters["@KlubbNamnVal"].Value = KlubbNamn ;

//try
//{
myConn.Open();
myCmd.ExecuteNonQuery();
//}
//finally
//{

myConn.Close();
//}
}


}
}


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-02 22:00:01 - Raderat konto

Använd < code c#>< /code> så vi lättare kan läsa din kod. Ja, du, detta är mystiskt. Ända jag kan föreslå är att du gör en Response.Write(); på sökvägen till din DB och se så att du har en korrekt sökväg. Du kan också skippa HttpContext.Current i detta sammanhanget. Det räcker med Server.MapPath().


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-02 22:04:21 - Patrik Dahlén

Du kan inte ha en knapp som heter AddBtn när din funktion heter AddBtn. Du måste ha olika namn på dem. Felet berättar att du definierar AddBtn mer än en gång vilket inte är så mystiskt.
Och var lägger du en eventhandler på din knapp?

/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nu


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-02 23:17:48 - Gert Lindholm

private void AddBtn_Click(object sender, System.EventArgs e)


Efter gjorda ändringar så händer följande :
Rad 62: The name 'KlubbNr' does not exist in the class or namespace 'berlingolf.NyKund'
Rad 64: The name 'KlubbNamn' does not exist in the class or namespace 'berlingolf.NyKund'

myCmd.Parameters.Add(new OleDbParameter("@KlubbNrVal", OleDbType.Integer, 10)); 
			myCmd.Parameters["@KlubbNrVal"].Value = KlubbNr ;

myCmd.Parameters.Add(new OleDbParameter("@KlubbNamnVal", OleDbType.VarChar, 50)); 
			myCmd.Parameters["@KlubbNamnVal"].Value = KlubbNamn ;


Sökte på Parameter Propertys och fann följande:

The OLE DB .NET Provider does not support named parameters for passing parameters to an SQL Statement or a stored procedure called by an OleDbCommand when CommandType is set to Text. In this case, the question mark (?) placeholder must be used. For example:

SELECT * FROM Customers WHERE CustomerID = ?
Men med samma svar av debugen!

Testade att Byta ut KlubbNr mot ett värde och KlubbNamn till test, men tyvärr samma visa igen.

Dags att sova på saken, bättre lycka då. Skam den som ger sig!

Gert








Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-03 08:10:08 - Patrik Dahlén

Om du ska använda variablerna KlubbNr och KlubbNamn så måste du deklarera dom och lägga in ett värde i dem. Som det är nu så är det bara två ord som inte finns någonannanstans i din kod.

/pD
www.pdc.se
www.pdc.se/blog
www.patrik-dahlen.nu


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-05 07:51:50 - Gert Lindholm

Vet inte om jag förstår dig riktigt, eller om du inte förstår mig. Men så här är det:

I Db så heter fälten KlubbNr och KlubbNamn, det är dit datan ska skickas.

Och i Formen sp heter TexBoxarna: KlubbNrVal och KlubbNrVal

Gert


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-05 08:13:02 - Raderat konto

Om du har visat all kod ovan, är detta de kontroller som finns och är deklarerade:

        protected System.Web.UI.WebControls.Table TableNewKund; 
        protected System.Web.UI.WebControls.Button AddBtn; 
        protected System.Web.UI.WebControls.Table Table1; 
        protected System.Web.UI.WebControls.Literal ltlError; 

Två Tabeller, en knapp och en Literal. Inga Textboxar finns, vare sig med namnen KlubbNrVal och KlubbNrVal, eller med något annat namn. Alltså, det finns inget som fyller variablerna KlubbNrVal och KlubbNrVal med värden (ex: string KlubbNrVal = KlubbNrVal.Text;). Det du beskriver är hur enkelt som helst och att du fortfarande inte har lyckats lokalisera felet tycker jag är anmärkningsvärt. Jag uppmanar dig att visa oss all kod. .aspx sida såväl som koden bakom. Visa också din datamodell (tabellen att inserta i) så jag kan testa detta på min egen maskin. Jag saknar vidare en Eventhandler för din AddBtn Click event. Denna skall deklareras i Page_Init/() > InitializeComponent() och se ut så här:
this.AddBtn.Click += new System.EventHandler(this.AddBtn_Click);


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-05 08:48:50 - Gert Lindholm

Detta är den senaste uppdateringen efter ditt tillägg this.AddBtn.Click.

<code#>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace berlingolf
{
/// <summary>
/// Summary description for NyKund.
/// </summary>
public class NyKund : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Table TableNewKund;
protected System.Web.UI.WebControls.TextBox KundNrVal;
protected System.Web.UI.WebControls.TextBox KundNamnVal;
protected System.Web.UI.WebControls.Table Table1;
protected System.Web.UI.WebControls.Button AddBtn;

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
}


#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.AddBtn.Click += new System.EventHandler(this.AddBtn_Click);


}
#endregion

private void AddBtn_Click(object sender, System.EventArgs e)
{
string SqlCmd = "INSERT INTO Kunder(KlubbNr, KlubbNamn) VALUES (?,?)";
OleDbConnection myConn = new OleDbConnection(
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db/BerlinGolf.mdb"));

OleDbCommand myCmd = new OleDbCommand(SqlCmd,myConn);
myCmd.Parameters.Add(new OleDbParameter("KlubbNrVal", OleDbType.Integer, 10));
myCmd.Parameters["KlubbNrVal"].Value = "KlubbNr" ;
myCmd.Parameters.Add(new OleDbParameter("KlubbNamnVal", OleDbType.VarChar, 50));
myCmd.Parameters["KlubbNamnVal"].Value = "KlubbNamn" ;
myCmd.Parameters["KlubbNr"].Value =KlubbNrVal;
myCmd.Parameters["KlubbNamn"].Value = KlubbNamn;

try
{
myConn.Open();
myCmd.ExecuteNonQuery();

}
finally
{
Response.Write(SqlCmd);
Response.End();
myConn.Close();
}
}
}
}
</code>


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-05 09:56:09 - Gert Lindholm



Fick detta felmeddelande nu. Vad betyder det?

System.NullReferenceException: Objektreferensen har inte angetts till en instans av ett objekt.

<code#>this.AddBtn.Click += new System.EventHandler(this.AddBtn_Click);</code>


Hälsningar
Gert


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-05 10:02:03 - Patrik Dahlén

Du skriver:
<code>
OleDbCommand myCmd = new OleDbCommand(SqlCmd,myConn);
myCmd.Parameters.Add(new OleDbParameter("KlubbNrVal", OleDbType.Integer, 10));
myCmd.Parameters["KlubbNrVal"].Value = "KlubbNr" ;
myCmd.Parameters.Add(new OleDbParameter("KlubbNamnVal", OleDbType.VarChar, 50));
myCmd.Parameters["KlubbNamnVal"].Value = "KlubbNamn" ;
myCmd.Parameters["KlubbNr"].Value =KlubbNrVal;
myCmd.Parameters["KlubbNamn"].Value = KlubbNamn;
</code>
Det du gör här är att du sätter värdet på dina parametrar till "KlubbNr" och "KlubbNamn".
Sen sätter du värdet på två parametrar som inte finns, KlubbNr och KlubbNamn. Raderna ovan har du ju gett deom namnen KlubbNrVal och KlubbNamnVal.

Är inte KlubbNr ett talfält i databasen? Då kan du inte stoppa in textsträngen "KlubbNr" där.

För det andra, eftersom du har deklarerat dina textboxar:
<code>
protected System.Web.UI.WebControls.TextBox KundNrVal;
protected System.Web.UI.WebControls.TextBox KundNamnVal;
</code>
innehåller inte de värdena du vill stoppa in i databasen?
I så fall så:
<code>
myCmd.Parameters.Add(new OleDbParameter("KlubbNrVal", OleDbType.Integer, 10));
myCmd.Parameters["KlubbNrVal"].Value = KundNrVal.Text ;
myCmd.Parameters.Add(new OleDbParameter("KlubbNamnVal", OleDbType.VarChar, 50));
myCmd.Parameters["KlubbNamnVal"].Value = KundNamnVal.Text ;
</code>
Värdet i en TextBox hämtar man med minTextBox.Text.

Jag har sagt det förut och säger det igen, gå igenom exemplen i Tutorials på asp.net för det är väldigt grundläggande fel du gör nu. Jag tror att du behöver ta ett par steg tillbaka. Lägg den här koden åt sidan och börja om från början, en del i taget.


Svara

Sv: Klickar på sänd och inget händer i Access db

Postades av 2004-06-12 14:59:35 - Gert Lindholm

Vill härmed passa på att tacka André och Patrik för hjälpen!
Framför allt Andr´e som erbjöd sig hjälpen att fixa min sida så det blev rätt.

Har läst och studerat "Börja med C" av Karli Watson" men tycker mig inte finna detta grunläggande i webb programmering när det gäller Insert into. Att söka i db är ju relativt lätt jämfört med att skriv i en db.
Nu har jag iaf fått en grund utb i hur man gör med Insert Into.

Kan ngn rekomendera en bra bok dör man kan se lösningar o exempel av ordinära webblösningar.

Tack på förhand
Gert


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 170
27 953
271 705
652
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