Avatar billede simsen Mester
23. juli 2006 - 17:07 Der er 1 kommentar og
1 løsning

bringe data med til ny form

Hej

Jeg har følgende kode, som virker perfekt, når jeg har oprettet et datagridview ved at drag and drop (koden overfører FakturaId til ny form, så jeg der kan lave en select på denne):

System.Data.DataRowView SelectedRowView;

fakturasystemDataSet.FakturaRow SelectedRow;


SelectedRowView = (System.Data.DataRowView)fakturaBindingSource.Current;

SelectedRow = (fakturasystemDataSet.FakturaRow)SelectedRowView.Row;

FakturaVis FakturaVisForm = new FakturaVis();

FakturaVisForm.LoadFakturaVis(SelectedRow.FakturaID);

FakturaVisForm.Show();

Nu er det jo således, at jeg har lavet min egen dataset og adapter. Og jeg har problemer med ovennævnte kode. Mit problem ligger i, at jeg ikke aner, hvordan jeg får FakturaRow frem i intellisense (altså hvordan får jeg denne ind i koden, hvor jeg instansierer dataset'et og adapteren)?

Er min dsView det samme som, som den af systemet genererede
fakturaBindingSource?

Min kode, for hvor jeg instansierer dataset og adaptere:

private void loadKundeFaktura()

{

//create a connection string to the access database

OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;

User Id=;Password=;

Data Source=" + myDB);

// Create the DataSet

ds = new DataSet("KundeFaktura");

// Fill the Dataset with Kunder, map Default Tablename

// "Table" to "Kunder".

da1 = new OleDbDataAdapter("SELECT KundeId, Navn, Adresse, Postnr, Byen,
Telefonnr, Mobilnr, EmailAdr, Noter FROM Kunder", cn);

da1.TableMappings.Add("Table", "Kunder");

da1.Fill(ds);

// Fill the Dataset with Faktura, map Default Tablename

// "Table" to "Faktura". ORDER BY FakturaID DESC

da2 = new OleDbDataAdapter("SELECT FakturaID, KundeID, Dato, BetalingsDato,
Betalt FROM Faktura ORDER BY FakturaID DESC", cn);

da2.TableMappings.Add("Table", "Faktura");

da2.Fill(ds);



// Establish the Relationship "RelOrdDet"

// between Kunder ---< [Faktura]

System.Data.DataRelation relOrdDet;

System.Data.DataColumn colMaster2;

System.Data.DataColumn colDetail2;

colMaster2 = ds.Tables["Kunder"].Columns["KundeId"];

colDetail2 = ds.Tables["Faktura"].Columns["KundeID"];

relOrdDet = new System.Data.DataRelation("RelOrdDet", colMaster2,
colDetail2);

ds.Relations.Add(relOrdDet);

// The DataViewManager returned by the DefaultViewManager

// property allows you to create custom settings for each

// DataTable in the DataSet.

dsView = ds.DefaultViewManager;

// Databinding for the Grid's

dgrKunder.DataSource = dsView;

dgrKunder.DataMember = "Kunder";

dgrFaktura.DataSource = dsView;

dgrFaktura.DataMember = "Kunder.RelOrdDet";

}

Mvh
simsen :-)
Avatar billede simsen Mester
24. juli 2006 - 08:11 #1
Jeg vil forsøge at formulere mig anderledes, siden ingen har svaret (I har nok ikke forstået mig)...

Jeg har brug for at overføre FakturaId fra en form til en anden.

Normalt gør jeg det ved, at oprette et DataGridView på form1, bruge VS' wizard til at oprette forbindelse til databasen og vise data i DataGridView'et. Så vil jeg på en knap have koden for at åbne den nye form og overføre FakturaId samtidig med. Se kode1 eksemplet.

Jeg har så forsøgt istedet for at bruge wizard, selv lave forbindelsen, dataadapteren osv. Se kode2.

Nu ved jeg så ikke hvad jeg skal gøre, for at overføre FakturaId. Jeg har brug for FakturaId (som er den brugeren står på i datagridview'et, når de trykker på knappen), på form2 da jeg ellers ikke kan findere ordrelinier mm.

Mvh
simsen


Kode1:
System.Data.DataRowView SelectedRowView;

fakturasystemDataSet.FakturaRow SelectedRow;


SelectedRowView = (System.Data.DataRowView)fakturaBindingSource.Current;

SelectedRow = (fakturasystemDataSet.FakturaRow)SelectedRowView.Row;

FakturaVis FakturaVisForm = new FakturaVis();

FakturaVisForm.LoadFakturaVis(SelectedRow.FakturaID);

FakturaVisForm.Show();

Kode2:
private void loadKundeFaktura()

{

//create a connection string to the access database

OleDbConnection cn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;

User Id=password=;

Data Source=" + myDB);

// Create the DataSet

ds = new DataSet("KundeFaktura");

// Fill the Dataset with Kunder, map Default Tablename

// "Table" to "Kunder".

da1 = new OleDbDataAdapter("SELECT KundeId, Navn, Adresse, Postnr, Byen,
Telefonnr, Mobilnr, EmailAdr, Noter FROM Kunder", cn);

da1.TableMappings.Add("Table", "Kunder");

da1.Fill(ds);

// Fill the Dataset with Faktura, map Default Tablename

// "Table" to "Faktura". ORDER BY FakturaID DESC

da2 = new OleDbDataAdapter("SELECT FakturaID, KundeID, Dato, BetalingsDato,
Betalt FROM Faktura ORDER BY FakturaID DESC", cn);

da2.TableMappings.Add("Table", "Faktura");

da2.Fill(ds);



// Establish the Relationship "RelOrdDet"

// between Kunder ---< [Faktura]

System.Data.DataRelation relOrdDet;

System.Data.DataColumn colMaster2;

System.Data.DataColumn colDetail2;

colMaster2 = ds.Tables["Kunder"].Columns["KundeId"];

colDetail2 = ds.Tables["Faktura"].Columns["KundeID"];

relOrdDet = new System.Data.DataRelation("RelOrdDet", colMaster2,
colDetail2);

ds.Relations.Add(relOrdDet);

// The DataViewManager returned by the DefaultViewManager

// property allows you to create custom settings for each

// DataTable in the DataSet.

dsView = ds.DefaultViewManager;

// Databinding for the Grid's

dgrKunder.DataSource = dsView;

dgrKunder.DataMember = "Kunder";

dgrFaktura.DataSource = dsView;

dgrFaktura.DataMember = "Kunder.RelOrdDet";

}
Avatar billede simsen Mester
24. juli 2006 - 22:46 #2
Jeg har klaret problemet - faktisk ganske simpelt.....

Jeg har fundet rækken, jeg står på. Herefter overfører jeg FakturaID,
fra rækken jeg står på. Og så bruger jeg det i min kode på form2.

mvh

simsen :-)
der lærer og lærer..... og ikke mindst er meget glad

Form1's kode:
private void btnFakturaVis_Click(object sender, EventArgs e)

{

//Her får jeg fat i den række jeg står på, på det pågældende gridview

CurrencyManager cm = this.BindingContext[dgrFaktura.DataSource,
dgrFaktura.DataMember] as CurrencyManager;

DataRowView rowView = cm.Current as DataRowView;

//Her tildeler jeg FakturaID til id

string id = rowView["FakturaID"].ToString();


//Her instansierer jeg min form2 med den id jeg har tildelt

FakturaVisForm = new FakturaVis(id);

FakturaVisForm.Show();

}

Form2's kode:

public partial class FakturaVis : Form

{

string id;

public FakturaVis(string id)

{

InitializeComponent();

this.id = id;

}


private void FakturaVis_Load(object sender, EventArgs e)

{

txtID.Text = id;

}

}
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