Avatar billede rastamand Nybegynder
01. marts 2005 - 09:13 Der er 6 kommentarer og
1 løsning

ASP.Net: UPDATE(Templatecolmn i DG) og INSERT(form) i db

C#, oledb, dataset..

Update:

Jeg bruger EditCommandColumn i et datagrid til dette. Jeg kan godt få det til at virke vha BoundColumns, som følger:

men hvordan er syntaxen i min MyDataGrid_Update funktion, hvis jeg vil bruge TemplateColumns i mit datagrid? - Gerne både for textbox og dropdownlist's..

syntaxen til boundcolums (som jeg bruger):
-------------------
int int_id = Convert.ToInt32(E.Item.Cells[1].Text);
int int_1 = ((TextBox) E.Item.Cells[3].Controls[0]).Text;
string str_1 = ((TextBox) E.Item.Cells[3].Controls[0]).Text;

String updateCmd = "UPDATE Tabel SET db_Id=@id, db_Int=@int ," +
                  "db_str=@str where db=@id";

myconnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " +
"Data Source=" + Server.MapPath("mydb.mdb"));
myconnection.Open();


OleDbCommand mycommand = new OleDbCommand(updateCmd, myconnection);
mycommand.CommandType = CommandType.Text;

//tildeler værdier til de enkelte felter i db

OleDbParameter parameterRecid = new OleDbParameter("@id", System.Data.OleDb.OleDbType.Integer);
parameterRecid.Value = recid;
mycommand.Parameters.Add(parameterRecid);

samme måde med de 2 sidste..
----------------------------

Insert:

her bruger jeg en html form og input box (+ req field og reqex), poster input via knap, hvis funktion har denne syntax:
------------------------
String insertcmd = "INSERT into Tabel (db_Id, db_Int, db_str) " +
  "values (@id, @int ,@str) where db=@id";

OleDbCommand mycommand = new OleDbCommand(insertcmd, myconnection);

mycommand.Parameters.Add(new System.Data.OleDb.OleDbParameter("@id", System.Data.OleDb.OleDbType.Integer));
mycommand.Parameters["@id"].Value = id.Value;

samme måde med sidste 2
-----------------------
Avatar billede rastamand Nybegynder
01. marts 2005 - 09:17 #1
rettelse i update:

OleDbParameter parameterRecid = new OleDbParameter("@id", System.Data.OleDb.OleDbType.Integer);
parameterRecid.Value = int_id; // <-- ikke recid..
mycommand.Parameters.Add(parameterRecid);
Avatar billede rastamand Nybegynder
01. marts 2005 - 13:16 #2
Er der ikke nogen venlige folk der vil hjælpe? Det vigtigste er:

update:

OleDbParameter parameterRecid = new OleDbParameter("@id", system.Data.OleDb.OleDbType.Integer);
parameterRecid.Value = int_id;
mycommand.Parameters.Add(parameterRecid);

insert:

mycommand.Parameters.Add(new System.Data.OleDb.OleDbParameter("@id", System.Data.OleDb.OleDbType.Integer));
mycommand.Parameters["@id"].Value = id.Value;

Hvordan insert næste id nr? Har prøvet med følgene uden held:

String insertcmd = "INSERT into Tabel (db_Id, db_Int, db_str) " +
  "values ('SELECT COUNT(*) FROM Economy', @int ,@str) where db=@id";

Eller skal man lave en funktion man kalder i sit insert statement??
Avatar billede rastamand Nybegynder
01. marts 2005 - 13:17 #3
rettelse:

'(SELECT COUNT(*) FROM Economy)+1' //skal jo være næste id nr..
Avatar billede rastamand Nybegynder
01. marts 2005 - 15:21 #4
Er der røg i systemet eller har jeg taget fuglen på jer?..
Avatar billede arne_v Ekspert
01. marts 2005 - 19:41 #5
Jeg tror at det er lidt svært at overskue hvad du har gang i.

Jeg kan hjælpe med en lille del - nemlig hvordan du får fat i den sidste indsatte id.

Når du har lavet en INSERT som genererer en ny id selv, så kan du i den næste
INSERT referere til @@IDENTITY (forudsat at det er Access, men det formoder jeg).
Avatar billede rastamand Nybegynder
05. marts 2005 - 19:22 #6
How its done:

Tilgå en template column i din MyDataGrid_Update:

string income = ((TextBox) E.Item.FindControl("Income")).Text;

i stedet for: string str_1 = ((TextBox) E.Item.Cells[3].Controls[0]).Text;

-----------------
Insert funktion med primær nøgle:

String insertcmd = "INSERT into Tabel (db_Int, db_str) " +
  "values (@int ,@str)";

istedet for:
String insertcmd = "INSERT into Tabel (db_Id, db_Int, db_str) " +
  "values (@id, @int ,@str) where db_Id=@id";

bemærk: primær nøgle er autonummer som selv indsættes (i Access db)
Avatar billede rastamand Nybegynder
05. marts 2005 - 19:23 #7
hold kæft hvor er jeg egentlig blevet god til at svare på mine egne spørgsmål!
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
Kurser inden for grundlæggende programmering

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