Avatar billede whitewine Nybegynder
07. december 2009 - 10:54 Der er 11 kommentarer

Der er ikke angivet nogen værdi for en eller flere krævede parametre. kan ikke finde fejlen selv!!! takker for hjælpen

har 4 radiobutton i formen  og det gør godt for 3 af dem, 1,3,4 men når nr 2 bliver valgt crasher programmet og der står"Der er ikke angivet nogen værdi for en eller flere krævede parametre".
Det er mærkeligt da procedueren er det samme for 1,3,4 men det er kun 2éren der driller. er der nogen der ved hvad det er galt. tak


if (ApparatId == 1)
{
  try
  {
    OleDbCommand aCommand = new OleDbCommand(" SELECT Kalibrering.[Kalibreringsfaktor 11], Kalibrering.[Kalibreringsdato 11], " +                                                                  " Kalibrering.[Kalibreringsdato 12], Kalibrering.[Kalibreringsfaktor 12]," +
                                                          " Transducer.[Transducer 11], Transducer.[Transducer 12] "+
                                                          " FROM Transducer INNER JOIN Kalibrering ON Transducer.[Transducer ID] = Kalibrering.[Transducer ID]", aConnection);
             
                                       
                    OleDbDataReader dr = aCommand.ExecuteReader();
                    while (dr.Read())
                    {
                        if (i == 0)
                        {
                            textBoxTransducer1.Text = dr["Transducer 11"].ToString();
                            textBoxKalibreringsFaktor1.Text = dr["Kalibreringsfaktor 11"].ToString();
                            textBoxKalibreringsFaktor2.Text = dr["Kalibreringsfaktor 12"].ToString();
                            textBoxTransducer2.Text = dr["Transducer 12"].ToString();
                        }
                        i++;
                       
                    }
                    dr.Close();
                    aConnection.Close();
                }
                catch (Exception e)
              {

                    MessageBox.Show("Error in connecting! " + e.ToString(), "Error");
                 
                }
            }
            else if (ApparatId == 2)
            {
                OleDbCommand aCommand = new OleDbCommand(" SELECT Kalibrering.[Kalibreringsfaktor 21], Kalibrering.[Kalibreringsdato 21], " +
                                                        " Kalibrering.[Kalibreringsdato 22], Kalibrering.[Kalibreringsfaktor 22]," +
                                                        " Transducer.[Transducer 21], Transducer.[Transducer 22] " +
                                                        " FROM Transducer INNER JOIN Kalibrering ON Transducer.[Transducer ID] = Kalibrering.[Transducer ID]", aConnection);


                OleDbDataReader dr = aCommand.ExecuteReader();
                while (dr.Read())
                {
                    if (i == 0)
                    {
                        textBoxTransducer1.Text = dr["Transducer 21"].ToString();
                        textBoxKalibreringsFaktor1.Text = dr["Kalibreringsfaktor 21"].ToString();
                        textBoxKalibreringsFaktor2.Text = dr["Kalibreringsfaktor 22"].ToString();
                        textBoxTransducer2.Text = dr["Transducer 22"].ToString();
                    }
                    i++;

                }
                dr.Close();
                aConnection.Close();
         
            }
Avatar billede bvli Praktikant
07. december 2009 - 11:02 #1
Hvordan ser din stacktrace ud? Hvilken linie fejler den på?
Avatar billede whitewine Nybegynder
07. december 2009 - 12:27 #2
mener du stack window under debug -> windows-> stack call?
Avatar billede whitewine Nybegynder
07. december 2009 - 12:34 #3
ved System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
  ved System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
  ved System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
  ved System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
  ved System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
  ved System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
  ved System.Data.OleDb.OleDbCommand.ExecuteReader()
  ved Konsolidering.StartForsoeg.HentKalibreringsfaktor(Int32 ApparatId) i C:\Documents and Settings\Kim Pour\Dokumenter\Visual Studio 2008\Projects\Konsolidering\Konsolidering\StartForsoeg.cs:linje 87
  ved Konsolidering.StartForsoeg.radioButtonStart2_CheckedChanged(Object sender, EventArgs e) i C:\Documents and Settings\Kim Pour\Dokumenter\Visual Studio 2008\Projects\Konsolidering\Konsolidering\StartForsoeg.cs:linje 244
  ved System.Windows.Forms.RadioButton.OnCheckedChanged(EventArgs e)
  ved System.Windows.Forms.RadioButton.set_Checked(Boolean value)
  ved System.Windows.Forms.RadioButton.OnClick(EventArgs e)
  ved System.Windows.Forms.RadioButton.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.Control.ControlNativeWindow.OnMessage(Message& m)
  ved System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  ved System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  ved System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
  ved System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
  ved System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
  ved System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
  ved System.Windows.Forms.Application.RunDialog(Form form)
  ved System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
  ved Konsolidering.Konsolidering.nytForsøgToolStripMenuItem_Click(Object sender, EventArgs e) i C:\Documents and Settings\Kim Pour\Dokumenter\Visual Studio 2008\Projects\Konsolidering\Konsolidering\Konsolidering.cs:linje 32
  ved System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
  ved System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
  ved System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
  ved System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
  ved System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
  ved System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
  ved System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
  ved System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
  ved System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  ved System.Windows.Forms.Control.WndProc(Message& m)
  ved System.Windows.Forms.ScrollableControl.WndProc(Message& m)
  ved System.Windows.Forms.ToolStrip.WndProc(Message& m)
  ved System.Windows.Forms.ToolStripDropDown.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.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
  ved System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
  ved System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
  ved System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
  ved System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
  ved System.Windows.Forms.Application.Run(Form mainForm)
  ved Konsolidering.Program.Main() i C:\Documents and Settings\Kim Pour\Dokumenter\Visual Studio 2008\Projects\Konsolidering\Konsolidering\Program.cs:linje 18
  ved System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
  ved System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
  ved Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
  ved System.Threading.ThreadHelper.ThreadStart_Context(Object state)
  ved System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
  ved System.Threading.ThreadHelper.ThreadStart()
Avatar billede bvli Praktikant
07. december 2009 - 12:57 #4
Jeg går ud fra, at det kodeklip du har givet os ligger i:
C:\Documents and Settings\Kim Pour\Dokumenter\Visual Studio 2008\Projects\Konsolidering\Konsolidering\StartForsoeg.cs

Kunne man lokke dig til at vise hvilken linie i ovenstående klip som er linje 87 i den rigtige fil?
Avatar billede kalp Novice
07. december 2009 - 13:28 #5
Du kan selv se hvad fejlen er ved og bruge din debugger.
Hvis du placere et break point på denne linje:
OleDbDataReader dr = aCommand.ExecuteReader();


og efterfølgende når debuggeren stopper der fører musen over disse forskellige parametrer:

OleDbCommand aCommand = new OleDbCommand(" SELECT Kalibrering.[Kalibreringsfaktor 21], Kalibrering.[Kalibreringsdato 21], " +
                                                        " Kalibrering.[Kalibreringsdato 22], Kalibrering.[Kalibreringsfaktor 22]," +
                                                        " Transducer.[Transducer 21], Transducer.[Transducer 22] " +
                                                        " FROM Transducer INNER JOIN Kalibrering ON Transducer.[Transducer ID] = Kalibrering.[Transducer ID]", aConnection);


og dermed kan du også se, at det der sker for dine radiobuttons ikke er ens, for der står da noget andet i radiobutton 1:)

så se nærmere på den sql og se hvad der er forkert i den.
Avatar billede kalp Novice
07. december 2009 - 13:30 #6
det nok ikke parametre kan jeg se, men undersøg den alligevel..

og sidst men ikke mindst.. du kan se hvor den præcist fejler ved at bruge din debugger igen.
Placer et break point og når den stopper der trykker du F10 for at hoppe igennem koden - når du rammer linjen med fejl vil du havne i en exception og dermed er det et skridt nærmere på en løsning.
Avatar billede whitewine Nybegynder
07. december 2009 - 13:43 #7
Det forstår jeg ikke da procedueren er nøjeagtig det samme for alle radiobuttons, men alligevel crasher den ved nr 2. når jeg debugger får jeg denne fejl : "Der er ikke angivet nogen værdi for en eller flere krævede parametre" og den stopper ved

OleDbDataReader dr = aCommand.ExecuteReader();

jeg har lavet koden lidt om så inden man vælger hvilken radiobutton tømmer jeg tilhørende textboxes for data


her er koden for rb2 :

else if (ApparatId == 2)
            {
                //try
                //{
                    textBoxTransducer1.Text = string.Empty;
                    textBoxTransducer2.Text = string.Empty;
                    textBoxKalibreringsFaktor1.Text = string.Empty;
                    textBoxKalibreringsFaktor2.Text = string.Empty;
                    OleDbConnection aConnection = new OleDbConnection(ConfigurationManager.ConnectionStrings["Konsolidering.Properties.Settings.KonsolideringConnectionString"].ToString());
                    aConnection.Open();
                    OleDbCommand aCommand = new OleDbCommand(" SELECT Kalibrering.[Kalibreringsfaktor 21], Kalibrering.[Kalibreringsdato 21], " +
                                                            " Kalibrering.[Kalibreringsdato 22], Kalibrering.[Kalibreringsfaktor 22]," +
                                                            " Transducer.[Transducer 21], Transducer.[Transducer 22] " +
                                                            " FROM Transducer INNER JOIN Kalibrering ON Transducer.[Transducer ID] = Kalibrering.[Transducer ID]", aConnection);


                    OleDbDataReader dr = aCommand.ExecuteReader();
                    while (dr.Read())
                    {
                        //if (i == 0)
                        //{
                            textBoxTransducer1.Text = dr["Transducer 21"].ToString();
                            textBoxKalibreringsFaktor1.Text = dr["Kalibreringsfaktor 21"].ToString();
                            textBoxKalibreringsFaktor2.Text = dr["Kalibreringsfaktor 22"].ToString();
                            textBoxTransducer2.Text = dr["Transducer 22"].ToString();
                        //}
                        //i++;

                    }
                    dr.Close();
                    aConnection.Close();
                //}
                //catch (Exception e)
                //{

                //    MessageBox.Show("Error in connecting! " + e.ToString(), "Error");

                //}
            }

mvh kim
Avatar billede bvli Praktikant
07. december 2009 - 13:50 #8
Men virker din sql hvis du fyrer den af direkte mod databasen?
Avatar billede whitewine Nybegynder
07. december 2009 - 16:35 #9
ja. det virker godt nok fra sql siden men ikke fra visual studio
Avatar billede bvli Praktikant
07. december 2009 - 17:43 #10
Ja der er nok ingen tvivl om, at det er din sql der er et eller andet galt med. Har du mon prøvet at kopiere sqlconnection- og sqlcommand-sætningerne fra en af de statements som virker, ned i 2'eren?

Jeg kan ihvertfald ikke umiddelbart se fejlen ud fra den sql du har givet her..
Avatar billede whitewine Nybegynder
07. december 2009 - 23:16 #11
nu har jeg rodet lidt med det her og jeg fandt ud af af while loopen fungerer ikke som den skal. under debug bliver den slet ikke eksekveret, derfor kommer der ingen værdi ud.
koden ser sådan ud nu:

else if (ApparatId == 2)
            {
             
                    textBoxTransducer1.Text = string.Empty;
                    textBoxTransducer2.Text = string.Empty;
                    textBoxKalibreringsFaktor1.Text = string.Empty;
                    textBoxKalibreringsFaktor2.Text = string.Empty;
                   
                    OleDbConnection aConnection = new OleDbConnection(ConfigurationManager.ConnectionStrings["Konsolidering.Properties.Settings.KonsolideringConnectionString"].ToString());
                    aConnection.Open();
                    OleDbCommand aCommand = new OleDbCommand("SELECT Kalibrering.[Kalibreringsfaktor 21], Kalibrering.[Kalibreringsdato 21]," +
                                                              "Kalibrering.[Kalibreringsfaktor 22], Kalibrering.[Kalibreringsdato 22]," +
                                                              "Transducer.[Transducer 21], Transducer.[Transducer 22]" +
                                                              "FROM Transducer INNER JOIN Kalibrering ON Transducer.[Transducer ID] = Kalibrering.[Transducer ID]", aConnection);

                     
               
                    OleDbDataReader dr = aCommand.ExecuteReader();
                    while (dr.Read())
                    {
                     
                            textBoxTransducer1.Text = dr["Transducer 21"].ToString();
                            textBoxKalibreringsFaktor1.Text = dr["Kalibreringsfaktor 21"].ToString();
                            textBoxKalibreringsFaktor2.Text = dr["Kalibreringsfaktor 22"].ToString();
                            textBoxTransducer2.Text = dr["Transducer 22"].ToString();
                   

                    }
                    dr.Close();
                    aConnection.Close();
             
            }

Jeg har kun pillet koden for valg af radiobutton 2. som sagt tidligere den virker fint for 1,3, og 4. takker mange gang for jeres indsats for at sætte mig igang :-)
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