Avatar billede rookie44 Juniormester
04. august 2008 - 13:08 Der er 17 kommentarer og
1 løsning

Udtræk fra Access data til VB.Net form

Jeg laver et udtræk fra min Access database i en Query der hedder FillByVarekartotek.

SELECT    T_Varer.Varenummer, T_Varer.Varetype, T_Varer.Varenavn, T_Varer.Tegnnr, T_Varer.Købsenhed, T_Varer.KøbsprisSt, T_Varer.Salgsenhed,
                      T_Varer.OmregnFaktor, T_Varer.SalgsprisSt, T_Varer.Levnummer, T_Varer.Beholdning, T_Varer.Minbehold, T_Varer.Bestilpkt, T_Varer.Bemærk,
                      T_Varer.LevNr2, T_Varer.StTillæg, T_Varer.Seriestr, T_Varer.KøbsPrisAjour, T_Varer.OmregnForbOverflEnh, T_Varer.OmregnForbLevEnh,
                      T_Varer.OmregnForbGalvEnh, T_Varer.OverflEnh, T_Varer.LevEnh, T_Varer.GalvEnh, T_Varer.TimerTotal, T_Varer.Styklisteniv, T_Varer.Aktivkode,
                      [T_Leverandører].LevNavn
FROM        (T_Varer INNER JOIN
                      [T_Leverandører] ON T_Varer.Levnummer = [T_Leverandører].LevNummer)
ORDER BY T_Varer.Varenummer


Jeg har en listbox der viser varenr, og ved klik får jeg vist de tilsvarende data på min Form. Bortset fra at jeg ikke kan få vist LevNavn på min Form.

Jeg har prøvet med en textbox, og et par forskellige metoder, men kan ikke få det til at virke

1. txtLevNavn.Text = MKPdataDataSet.T_Leverandører("LevNavn")

2.  txtLevNavn.Text = (SELECT  [T_Leverandører].LevNavn() _
FROM        (T_Varer INNER JOIN _
                      [T_Leverandører] ON T_Varer.Levnummer = _ [T_Leverandører].LevNummer))


Er der nogen der kan sige mig hvad jeg skal skrive for at det virker.
Avatar billede arne_v Ekspert
05. august 2008 - 02:17 #1
Medmindre du er ovre i noget LINQ for database, så skal du vel bruge
OleDbConnection og OleDbCommand - og så hente en eller flere værdier ud som du
så bruger som du vil.
Avatar billede arne_v Ekspert
05. august 2008 - 02:18 #2
kode snippet:

            Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb")
            con.Open
            Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT * FROM T1", con)
            Dim ds As DataSet = New DataSet
            da.Fill(ds, "T1")
            comboBox1.DataSource = ds.Tables("T1")
            comboBox1.DisplayMember = "F2"
            comboBox1.ValueMember = "F1"
Avatar billede arne_v Ekspert
05. august 2008 - 02:19 #3
ditto:

    OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Databases\MSAccess\Test.mdb");
    con.Open();
    OleDbCommand sel = new OleDbCommand("SELECT COUNT(*) FROM t1", con);
    int n = (int)sel.ExecuteScalar();
    con.Close();
    result.Text = n.ToString();
Avatar billede rookie44 Juniormester
05. august 2008 - 15:55 #4
arne v

ad kode snippet:
Jeg har på min form en tableadapter, den er lavet med en FillByxxx i en Query som indeholder feltet LevNavn, kan den ikke bruges eller skal jeg explicit lave en ny?

skal det læses ud i Combobox.

Jeg har fundet noget med at lave en combobox og forbinde til min tableadapter, så kan jeg få vist mit LevNavn, men ikke samtidig mit LevNr.

Det jeg gerne vil er at jeg kan se både LevNr og det tilhørende LevNavn, kan det gøres som du beskriver med en comboBox2?

ditto:
Den kan jeg ikke rigtig greje, hvad der sker her.
Avatar billede arne_v Ekspert
05. august 2008 - 16:06 #5
Du kan godt hente data fra dit eksisterende DataSet.

Nej - du bruger en ListBox - jeg havde bare et ComboBox eksempel paa lager.

Det sidste eksempel viser hvordan man fisker en enkelt vaerdi ud med ExecuteScalar.

Hele pointen er at du skal bruge database klasserne.
Avatar billede rookie44 Juniormester
05. august 2008 - 18:56 #6
Det virker, jeg bruger en Combox til det første felt, fordi der skal kunne skiftes leverandør og en listbox til at viste det tilhørebnde navn.

Hvordan giver jeg point, det er nyt for mig.

Jeg prøver fra startsiden af programmet at lade brugeren vælge, hvor databasen ligger og den sti jeg får frem der vil jeg gerne bruge som Connectionstring som gældende for alle forms. Det er fordi der bruges 2 databaser en med testdata og en med brugerens rigtige data.
Avatar billede arne_v Ekspert
05. august 2008 - 19:11 #7
Jeg skal foerst smide et svar.
Avatar billede arne_v Ekspert
05. august 2008 - 19:11 #8
svar
Avatar billede arne_v Ekspert
05. august 2008 - 19:13 #9
Smid de to connection strings i app/web config og lad brugeren vaelge og brug den valgte.
Avatar billede rookie44 Juniormester
05. august 2008 - 19:16 #10
De to connection strings kender jeg ikke på forhånd, og er måske forskellig fra bruger til bruger. Hvad gør man så?
Avatar billede arne_v Ekspert
05. august 2008 - 19:34 #11
Hvis du ikke kender dem, saa skal brugene vil indtaste den i en TextBox ?
Avatar billede rookie44 Juniormester
05. august 2008 - 19:39 #12
Han finder den database han vil bruge ved hjælp af en dialogbox. Placeringen viser jeg så i en label eller textbox, den vil jeg så gerne have brugt som connectionstring. Det kan så være at han på et tidspunkt vil skifte til anden database og så er det den nye connectionstring der skal bruges.
Avatar billede rookie44 Juniormester
05. august 2008 - 19:50 #13
Jeg har klikket på Accepter, men har du fået points?
Avatar billede arne_v Ekspert
05. august 2008 - 19:57 #14
Nix.

Du skal markere midt navn ude i combo boxen inden du klikker accepter.
Avatar billede arne_v Ekspert
05. august 2008 - 19:57 #15
Du kan altid konstruere en connection string til Access udfra stien til filen uanset
hvilken for for variabel den opbevares i.
Avatar billede rookie44 Juniormester
05. august 2008 - 20:09 #16
Så er point på plads.

Det jeg ikke helt er med på er, skal jeg kun lave en connection string 1 gang og så overskriver den den som jeg fik dannet da jeg under udviklingen Add New Datasource fik lavet.
Det er jo det jeg gerne vil have gjort, så brugeren kan have sin database ligggende hvor han vil.
Avatar billede arne_v Ekspert
05. august 2008 - 20:58 #17
Noget a la:

con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & tb.Text
Avatar billede rookie44 Juniormester
05. august 2008 - 21:07 #18
Jeg prøver og vender nok tilbage med nyt spørgsmål senere.

Du får tak for hjælpen
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