dragnor Juniormester
30. september 2020 - 07:28 Der er 2 kommentarer og
1 løsning

System.ArgumentException: 'Parameter is not valid.'

Hej,

Jeg har lavet lidt hygge programering i noget tid Visual Studio og med stor success indtil nu. Jeg er dog løbet ind i et problem jeg ikke lige kan finde ud af hvad jeg skal gøre med :-(

Jeg får følgende fejl:
System.ArgumentException: 'Parameter is not valid.'

Her i koden:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Munin
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
//Fejlbeskeden/cursor stopper i linjen nedenfor           
Application.Run(new Menu());
        }
    }
}

Det forekommer i forbindelse med følgende kode:
private void upd_Q()
        {
            string ConString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString;
            string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
            string BNR = userName.Substring(userName.Length - 6, 6);

            using (SqlConnection connection = new SqlConnection(ConString))
            {
                try
                {
                    int curRow = -1;

                    if (dgv_C.CurrentRow.Index != -1)
                    {
                        curRow = dgv_C.CurrentRow.Index;
                    }

                    dgv_Q2.DataSource = null;
                    dgv_Q2.Rows.Clear();
                    string query = @"      SELECT        QA.T_QA_B_CASE_Q.Q_ID, QA.T_QA_B_CASE_T.T_NAME AS Taxonomy, QA.T_QA_B_QUESTIONS.Q_NAME AS Question, QA.T_QA_B_CASE_Q.Q_RESULT AS Result
                                            FROM            QA.T_QA_B_CASE_Q with (nolock) INNER JOIN
                                                                    QA.T_QA_B_QUESTIONS with (nolock) ON QA.T_QA_B_CASE_Q.Q_ID = QA.T_QA_B_QUESTIONS.Q_ID INNER JOIN
                                                                    QA.T_QA_B_CASE_T with (nolock) ON QA.T_QA_B_QUESTIONS.T_ID = QA.T_QA_B_CASE_T.T_ID
                                            WHERE        (QA.T_QA_B_CASE_Q.U_CASE_ID = '"+ dgv_C.Rows[curRow].Cells[0].Value.ToString() + "') AND (QA.T_QA_B_CASE_T.QA_TYPE =" + dgv_C.Rows[curRow].Cells[12].Value.ToString() + ") ORDER BY QA.T_QA_B_CASE_T.T_ORDER, QA.T_QA_B_QUESTIONS.Q_ORDER";
                    SqlDataAdapter da = new SqlDataAdapter(query, connection);
                    connection.Open();
                    DataSet ds = new DataSet();
                    da.Fill(ds, "Q");
                    dgv_Q2.AutoGenerateColumns = true;
                    dgv_Q2.DataSource = ds; // dataset
                    dgv_Q2.DataMember = "Q"; // table name you need to show
                    connection.Close();
                    dgv_Q2.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
                    dgv_Q2.Columns[0].Visible = false;
                }
                catch (Exception ex)
                {
                    DateTime myDateTime = DateTime.Now;
                    string sqlFormattedDate = myDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
                    userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
                    SqlConnection EL = new SqlConnection(ConString);
                    string SqlCmdText = @"  INSERT INTO [DATA].[QA].[T_QA_B_ERR_LOG]([ROW_TS],[BNR],[FORM],[MSG])
                                                VALUES(@ROW_TS,@BNR,@FORM,@MSG)";
                    SqlCommand sc = new SqlCommand(SqlCmdText, EL);
                    EL.Open();
                    sc.Parameters.Clear();
                    sc.Parameters.AddWithValue("@ROW_TS", sqlFormattedDate);
                    sc.Parameters.AddWithValue("@BNR", userName);
                    sc.Parameters.AddWithValue("@FORM", "Checker");
                    sc.Parameters.AddWithValue("@MSG", "upd_Q: " + ex.Message.ToString());
                    sc.ExecuteNonQuery();

                    EL.Close();
                }
            }
        }

Det der gør det ekstra underligt er at den ikke gør det ved først kørsel af private void upd_Q() men først anden gang den køre koden.

Kan nogen hjælpe mig til at forstå hvad jeg gør galt så jeg kan blive klogere på mine fejl?

På forhånd 1000 tak for jeres tid!
Rune1983 Guru
30. september 2020 - 07:34 #1
Mener du i Visual Studio kan køre dit program i debug mode ... så den viser linien hvor fejlen opstår. Måske det vil giv lidt mere viden omkring hvor du skal fokusere henne.
dragnor Juniormester
30. september 2020 - 07:50 #2
Ja det kan godt køre i debug mode. Alt virker fint, indtil jeg køre den del kode nævnt overfor 2 gange. Jeg har andre forms hvor et datagridview opdatere et andet datagridview, uden den fejl. Men i dette tilfælde fejler den anden gang den køres og det giver absolut ingen mening :-(

Problemet med fejlbeskeden er at den ikke peger på den form hvor koden udføres men stopper i selve projektet.
dragnor Juniormester
30. september 2020 - 08:18 #3
Jeg fandt fejlen.

Jeg har et LinkLabel og det fejler hvis man tilføjer mere end en gang hvis man glemmer at bruge Clear(); inden man tilføjer et nyt link.

Underligt at den ikke bare peger på den del af koden.

Den fejler fordi den ikke kan repræsentere 2 links på en gang tror jeg.
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

Opret Preview

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





Premium
Skal du tage en Pro eller ej? Sådan vælger du imellem iPhone 12 og 12 Pro
Apples to iPhone-nyheder minder overraskende meget om hinanden. Der er dog væsentlige forskelle, som du skal være opmærksom på, når du vælger.
Computerworld
Det nye MitID er et tigerspring for bedre cybersikkerhed
Klumme: Det nye MitID er en enestående mulighed for et markant løft af it-sikkerheden i danske kommuner. Med baggrund i udfasningen af det nuværende NemID kan de samtidig forbedre og styrke deres it-systemers værn overfor cyberangreb.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
Job & Karriere
Regner din ferie væk? Brug tiden på at søge en af disse otte stillinger, der er ledige netop nu
Det sjasker ned over hele Danmark. Du kan bruge de våde sommerdage på at søge et af disse otte job, der er ledige lige nu.
White paper
Optimér produktiviteten og lad din printer følge med ud i skyen
De fleste virksomheder investerer betydelige beløb i den digitale transformationsproces, men skriver alligevel dokumenter ud som aldrig før, og medarbejdere opfatter decideret print som en forudsætning for at kunne arbejde effektivt. Alligevel er virksomhedens printstruktur ofte et systemmæssigt stedbarn, der er sammenstykket af mange forskellige enheder og platforme – hvilket skaber forvirring og betydeligt tidsspilde. Print passer heller helt ind i hverken den eksisterende digitale infrastruktur eller i den cloudbaserede infrastruktur, virksomheden sigter mod. Det udfordrer både sikkerhed, produktivitet og digital strategi som hele. I denne hvidbog kan du læse om udfordringerne og om, hvordan du håndterer dem mest effektivt som et led i den digitale transformationsproces.