Avatar billede anders_cp Nybegynder
17. februar 2009 - 02:38 Der er 7 kommentarer og
1 løsning

JIT fejl ved udtræk fra access-db

Hej
Jeg får en fejl når jeg forsøger at udtrække fra en access-db. fra en windows form.
Det er et felt som hedder link, der giver fejlen. Følgende tekststreng ønskes ud:
E:\DriverProgram\WindowsDrivere\Drivere\DVD 36\start.exe
men det virker kun hvis jeg skærer noget af tekststrengen af:
E:\DriverProgram\WindowsDrivere\Drivere\DVD 36\star

altså mangler der "t.exe". Feltet er defineret til at skulle indeholde 255 tegn, så jeg gætter på det må være table-adapteren den er gal med.

Her er koden:
      private void CreateButtons(int serieid)
        {


            driverdatabaseDataSetTableAdapters.ModelTableAdapter MODELadapter =
                new WindowsDrivere.driverdatabaseDataSetTableAdapters.ModelTableAdapter();

            driverdatabaseDataSet.ModelDataTable models;

            models = MODELadapter.GetModelsfromF_SerieID(serieid);
            int counter = models.Count;
            string theModelname;
            string theLink;
            ArrayList al = new ArrayList();

            int modelcount = 1;
            string[] modelarray = new string[counter+1];
            string[] linkarray = new string[counter+1];
           
            foreach (driverdatabaseDataSet.ModelRow modelRow in models)
            {
                theModelname = (string)modelRow["ModelName"];
                theLink = (string)modelRow["Link"];
                al.Add(new CustomButton(theModelname, theLink));

                modelarray[modelcount] = theModelname;
                linkarray[modelcount] = theLink;
                modelcount++;
            }

.......

Fejlen opstår ved:
models = MODELadapter.GetModelsfromF_SerieID(serieid);

og lyder:
Se slutningen af denne meddelelse, hvis du vil have detaljer om,
hvordan du starter JIT-fejlfinding i stedet for denne dialogboks.

************** Undtagelsestekst **************
System.Data.ConstraintException: Begrænsningerne blev ikke aktiveret. En eller flere rækker indeholder værdier, der overskrider begrænsningerne på værdier uden null, entydige værdier og fremmede nøgler.
  ved System.Data.DataTable.EnableConstraints()
  ved System.Data.DataTable.set_EnforceConstraints(Boolean value)
  ved System.Data.DataTable.EndLoadData()
  ved System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
  ved System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
  ved System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
  ved System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
  ved System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
  ved WindowsDrivere.driverdatabaseDataSetTableAdapters.ModelTableAdapter.GetModelsfromF_SerieID(Nullable`1 F_SerieID) i E:\DriverProgram\WindowsDrivere\WindowsDrivere\driverdatabaseDataSet1.Designer.cs:linje 1690
  ved WindowsDrivere.MainForm.CreateButtons(Int32 serieid) i E:\DriverProgram\WindowsDrivere\WindowsDrivere\Form1.cs:linje 281
  ved WindowsDrivere.MainForm.button31_Click(Object sender, EventArgs e) i E:\DriverProgram\WindowsDrivere\WindowsDrivere\Form1.cs:linje 266
  ved System.Windows.Forms.Control.OnClick(EventArgs e)
  ved System.Windows.Forms.Button.OnClick(EventArgs e)
  ved System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
  ved System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  ved System.Windows.Forms.Control.WndProc(Message& m)
  ved System.Windows.Forms.ButtonBase.WndProc(Message& m)
  ved System.Windows.Forms.Button.WndProc(Message& m)
  ved System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
  ved System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  ved System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Indlæste assemblies **************
mscorlib
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
WindowsDrivere
    Assemblyversion: 1.0.0.0
    Win32-version: 1.0.0.0
    CodeBase: file:///E:/DriverProgram/WindowsDrivere/WindowsDrivere/bin/Debug/WindowsDrivere.exe
----------------------------------------
System.Windows.Forms
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Data
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Transactions
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.Transactions/2.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_32/System.EnterpriseServices/2.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
System.Windows.Forms.resources
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_da_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
System.Data.resources
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Data.resources/2.0.0.0_da_b77a5c561934e089/System.Data.resources.dll
----------------------------------------
mscorlib.resources
    Assemblyversion: 2.0.0.0
    Win32-version: 2.0.50727.1433 (REDBITS.050727-1400)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------

************** JIT-fejlfinding **************
Hvis du vil aktivere JIT-fejlfinding, skal værdien jitDebugging indstilles
i afsnittet system.windows.forms i konfigurationsfilen
for programmet eller computeren.
Programmet skal desuden kompileres med fejlfinding
aktiveret.

Eksempel:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Når JIT-fejlfinding er aktiveret, bliver alle ikke-afviklede
undtagelser sendt til den JIT-fejlfindingsfunktion, der er registreret på computeren, i stedet for
at blive afviklet af denne dialogboks.
Avatar billede arne_v Ekspert
17. februar 2009 - 02:45 #1
Ikke et svar men 2 spørgsmål:
1) hvorfor gemmer du ikke noget i arrayas i index 0 ?
2) hvis du alligevel skovler over i array hvorfor så ikke bruge data readet i.s.f. data adapter ?
Avatar billede arne_v Ekspert
17. februar 2009 - 02:47 #2
Det er svært at sige hvad fjel er da den ikke sker i den postede kode.
Avatar billede aaberg Nybegynder
17. februar 2009 - 08:51 #3
Jeg vil give arne_v ret i, at en DataReader ville være bedre og nemmere at bruge i dit tilfælde. Det ville også eliminere eventuelle fejl i opsætningen af din TableAdapter.

Her er et link til dokumentationen for en OleDbDataReader, der er også et lille simpelt eksempel.
http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdatareader.aspx

Får du brug for en connectionstring, så finder du den her:
http://connectionstrings.com/
Avatar billede anders_cp Nybegynder
17. februar 2009 - 10:13 #4
1) hvorfor gemmer du ikke noget i arrayas i index 0 ?
2) hvis du alligevel skovler over i array hvorfor så ikke bruge data readet i.s.f. data adapter ?

ad 1) du mener vel fordi jeg blander alm. arrays og arraylist sammen? Det er fordi jeg først havde lavet det med arraylist og sidenhen med alm. arrays, så meningen er at jeg kun skal bruge en af delene - men fejlen opstår ikke ifb. array'ene ser det ud til.

ad 2)
Jeg har bygget hele databasen op på at bruge dataadapter foranlediget af denne tutorial:
http://www.asp.net/Learn/data-access/tutorial-01-cs.aspx

Jeg har lavet noget i stil med dette. Selvfølgelig andre data og tabeller:
http://static.asp.net/asp.net/images/dataaccess/01fig23cs.png

Koden jeg har postet først, giver adgang til TableAdapteren, og har virket indtil dette problem.

Skal jeg ændre denne struktur for at bruge datareader?
Avatar billede aaberg Nybegynder
17. februar 2009 - 10:24 #5
Både almindelige arrays og arraylists er 0-indexeret i .NET.

Som jeg ser det, behøver du ikke at lave det om, men lige præcist for den stump kode du viser os, ville det være mere logisk at bruge en reader. Men, hvis du bruger TableAdapteren flere steder fra, er det nok dumt at begynde at lave det om.

Men jeg tror arne_v har ret når han siger, at fejlen ikke sker i den kodestump du har postet. Jeg vil tro at fejlen enten er i din database, eller i opsætningen af dataadapteren.
Avatar billede anders_cp Nybegynder
17. februar 2009 - 11:03 #6
vedr. 0-index.
Nåh - nu forstår jeg spørgsmålet (havde misforstået det først). Grunden til jeg ikke gemmer i 0-indexet er for at undgå forvirring senere hen i koden, hvor hvert index svarer til button1, button2 osv. Jeg ved godt at jeg dermed bruger unødig plads i arrayet, men for overskuelighedens (og da datane ikke er vildt store) har jeg alligevel gjort dette.

Jeg må forsøge senere i dag at forske videre, og vil naturligvis holde jer orienteret. Hvis I har andre løsningsforslag er disse naturligvis velkomne ;)
Avatar billede anders_cp Nybegynder
17. februar 2009 - 11:32 #7
Måske ligger min fejl i tabel-def. Who knows. Så jeg delagtiggører jer lige dem (ikke det helt vilde). Det er en Access-db. som jeg ikke er helt fortrolig med (plejer at bruge ms-sql), og det er, som sagt, feltet model.link, der skaber problemer - måske I kan se en fejl..:

CREATE TABLE Serie
(
    SerieID        AUTOINCREMENT NOT NULL
        PRIMARY KEY,
    F_OperatingSystemID        INTEGER,
    SerieName        TEXT
)

CREATE TABLE Model
(
    ModelID        AUTOINCREMENT NOT NULL
        PRIMARY KEY,
    ModelName    TEXT,
    F_SerieID    INTEGER,
    Link        TEXT
)

ALTER TABLE Model
    ADD CONSTRAINT F_SerieID
    FOREIGN    KEY (F_SerieID) REFERENCES Serie(SerieID)



CREATE TABLE OperatingSystem
(
    OperatingSystemID AUTOINCREMENT     NOT NULL
        PRIMARY KEY,
    OPName        TEXT
)



ALTER TABLE Serie
    ADD CONSTRAINT F_OperatingSystemID
    FOREIGN    KEY (F_OperatingSystemID) REFERENCES OperatingSystem(OperatingSystemID)
Avatar billede anders_cp Nybegynder
17. februar 2009 - 21:57 #8
Så har jeg fundet problemet. Var såre simpelt (og lidt pinligt). I det grafiske dataset, skulle jeg ændre maxlength-propertyen på model-tabellen...

Samme billede som dette link:
http://static.asp.net/asp.net/images/dataaccess/01fig23cs.png

Så jeg tillader mig selv at snuppe pointene, men tak alligevel for jeres gode råd. Vil næste gang tænke lidt over at bruge DataReader ;)
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