Avatar billede laurits Nybegynder
04. maj 2005 - 23:27 Der er 22 kommentarer og
1 løsning

Hente Tabel navn fra Acces DB

Hej, er dernigen der ved hvordan man et tabel navn ud fra en Access DB. Jeg har prøvet med flg. metode meeen det virker ikke lige.
public String GetName()
        {
            this.adapter1.SelectCommand = new OleDbCommand("Show tables", connect);
            String a = this.adapter1.SelectCommand.ToString();
            connect.Close();
            return a;
        }
Outputte bliver "System.Data.OleDB.OleDBCommand".
Avatar billede arne_v Ekspert
04. maj 2005 - 23:29 #1
Eksempel:

using System;
using System.Data;
using System.Data.OleDb;

class MainClass
{
    public static void Main(string[] args)
    {
        OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\Database\\MSAccess\\Test.mdb");
        con.Open();
        /*
        OleDbCommand cmd = new OleDbCommand("SELECT name FROM MSysObjects WHERE type=1 AND flags=0", con);
        OleDbDataReader rdr = cmd.ExecuteReader();
        while(rdr.Read()) {
            Console.WriteLine(rdr[0]);
        }
        */
        string[] criteria = {null, null, null, "TABLE" };
        DataTable dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, criteria );
        for(int i = 0; i < dt.Rows.Count; i++)
        {
            Console.WriteLine(dt.Rows[i][2]);
        }
        con.Close();
    }
}
Avatar billede arne_v Ekspert
04. maj 2005 - 23:30 #2
den udkommenterede metode virker ikke

men GetOleDbSchemaTable virker
Avatar billede laurits Nybegynder
04. maj 2005 - 23:34 #3
okay. Jeg kan se du bruger et String array. Er edet ikke muligt kun at hente tabel til en string, istedet (bare lige for nemheds skyld  ;-) )
Avatar billede arne_v Ekspert
04. maj 2005 - 23:37 #4
jeg henter til en DataTable

nej - jeg tror du er nødt til at fiske navnene ud af den
Avatar billede laurits Nybegynder
04. maj 2005 - 23:38 #5
hmm nå okay. Det prøver jeg lige
Avatar billede nielle Nybegynder
05. maj 2005 - 23:31 #6
Et alternativ er at bruge ADODB og ADOX (lidt ældre teknologier):

void ListTabeller()
{
    ADODB.Connection conn = new ADODB.ConnectionClass();
    conn.Open(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\DinPath\DinDatabase.mdb", "", "", 0);

    ADOX.CatalogClass catalog = new ADOX.CatalogClass();
    catalog.ActiveConnection = conn;

    foreach (ADOX.Table table in catalog.Tables)
    {
        if (table.Type == "TABLE")
            Console.WriteLine(table.Name);
    }
}


For at denne kode vil kompilerer, er du imidlertid nødt til at tilføje et par ekstra referencer:

Add References, under COM tabben:

Microsoft ActiveX Data Objects 2.x Library - for at kunne bruge ADODB.
Microsoft ADO Ext 2.7 DLL and Security - for at kunne bruge ADOX.
Avatar billede nielle Nybegynder
12. maj 2005 - 19:25 #7
Lukketid?
Avatar billede laurits Nybegynder
18. maj 2005 - 22:58 #8
ja det er det da vist  :-)
Avatar billede arne_v Ekspert
18. maj 2005 - 23:01 #9
der var ikke noget som virkede ?
Avatar billede nielle Nybegynder
25. maj 2005 - 18:56 #10
laurits> Når vi nu har brugt tid på dit spørgsmål er det vel kun ren høflighed at svare. Var arne_v's løsning, eller min for den sags skyld, ikke lige det du skulle bruge, eller fandt du en anden løsning?
Avatar billede laurits Nybegynder
28. maj 2005 - 10:29 #11
Jeg beklager dybt at jeg ikke har fået svaret tilbage på jeres svar.
Dette har absolut ikke været meningen, jeg har fuldstændig glemt det, da jeg har været en del hængt op de sidste 14 dage.
Mht. til løsningen har jeg ikke fået det til at virke, og har mere eller mindre måtte opgivet det.
Som et lille plaster på såret og for jers tålmodighed vil jeg gerne give jeg begge pointene. Så hvis en af jer svare her og den anden på http://www.eksperten.dk/spm/621350.  Jeg beklager endnu engang. :-)
Avatar billede nielle Nybegynder
28. maj 2005 - 10:32 #12
Jeg ville da meget hellere få dit problem løst. Kunne du ikke poste din kode?
Avatar billede arne_v Ekspert
28. maj 2005 - 10:33 #13
du har allerede accepteret dit eget svar her så ....
Avatar billede laurits Nybegynder
28. maj 2005 - 10:43 #14
nielle> jo men så bliver det lige lidt senere da koden ligger på en anden PC jeg ikke har ved mig pt.  :(
Avatar billede laurits Nybegynder
28. maj 2005 - 10:44 #15
så prøv her arne_v : http://www.eksperten.dk/spm/621356  :-)
Avatar billede nielle Nybegynder
28. maj 2005 - 10:46 #16
laurits> Bare rolig det skal ikke være lige nu og her - bare på et eller andet tidspunkt. Hvis du altså ikke er helt parat til at opgive.
Avatar billede laurits Nybegynder
28. maj 2005 - 10:48 #17
nej jeg har ikke opgivet, jeg vil gerne så om det kunne lykkedes :-)
Avatar billede nielle Nybegynder
01. juni 2005 - 17:32 #18
Hør, skulle du ikke poste noget kode så vi kunne komme videre?
Avatar billede nielle Nybegynder
24. juni 2005 - 17:52 #19
Respons, tak...
Avatar billede laurits Nybegynder
27. juni 2005 - 14:08 #20
Hej Nielle, jeg er lige kommet hjem fra ferie og set dit indlæg.
Jeg må dog beklage og sige at projektet er blevet ændret en del og det er derfor ikke bliver aktuelt at hente Tabel navnet alligevel.
Dog undre det mig at jeg ikke altid får en mail når der kommer indlæg. Eksempelvis fik jeg ikke en mail vedr. dit indlæg d. 1/6 men først d. 24/6.

Mvh- Laurits
Avatar billede nielle Nybegynder
27. juni 2005 - 17:55 #21
Eksperten.dk har haft massive problemer med deres mailsystem - de har haft en periode på over 3 uger hvor de ikke udsendte noget (men så fik jeg også en bunke med over 1000 mails på en gang – yikes!).

Husk nu lige også at lukke:

http://www.eksperten.dk/spm/621350
Avatar billede laurits Nybegynder
27. juni 2005 - 23:56 #22
nielle -> Pointene på http://www.eksperten.dk/spm/621350 tilhører vist snarer dig for din tålmodighed.
Giv et svar og få dine point.  :-)
Avatar billede nielle Nybegynder
29. juni 2005 - 06:50 #23
Jeg modtager kun point for løsninger - ikke for tålmodighed. Tag du dem bare selv. :^)
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