Member 13055644 Ответов: 1

Как изменить таблицу, содержащую внешний ключ


Hi friends,
I have a table named "bon récéption " and which contains a foreign key Id_marche and in the interface of "bon récéption " I filled the combobox of the "libélllé marche"short market the problem is in button modify when I want to modify gives me this error
I will extract here my code and the error
thank you in advance


Что я уже пробовал:

Program.cmd.CommandText = "update bon_reception_marche set Id_marche = (select distinct Id_marche from marche where Libelle_marche = '" + comboBox3.Text + "') ,Designation_bon_reception ='" + textBox2.Text + "',Num_bon_reception='" + textBox1.Text + "',Date_reception ='" + dateTimePicker1.Value.Date + "',Unite ='" + textBox3.Text + "',Qte= " + Convert.ToDouble(textBox4.Text) + ",Prix_unitaire=" + Convert.ToDouble(textBox5.Text) + ",Montant =" + Convert.ToDouble(textBox6.Text) + ",TVA =" + Convert.ToDouble(comboBox1.Text) + ",MO ='" + textBox8.Text + "',OT ='" + textBox9.Text + "' where Id_bon_reception_marche ="+textBox7.Text;



erreur
Le format de la chaîne d'entrée est incorrect.

Richard Deeming

Program.cmd.CommandText = "update bon_reception_marche set Id_marche = (select distinct Id_marche from marche where Libelle_marche = @Libelle_marche), Designation_bon_reception = @Designation_bon_reception, Num_bon_reception = @Num_bon_reception, Date_reception = @Date_reception, Unite = @Unite, Qte = @Qte, Prix_unitaire = @Prix_unitaire, Montant = @Montant, TVA = @TVA, MO = @MO, OT = @OT where Id_bon_reception_marche = @Id_bon_reception_marche";

Program.cmd.Parameters.AddWithValue("@Libelle_marche", comboBox3.Text);
Program.cmd.Parameters.AddWithValue("@Designation_bon_reception", textBox2.Text);
Program.cmd.Parameters.AddWithValue("@Num_bon_reception", textBox1.Text);
Program.cmd.Parameters.AddWithValue("@Date_reception", dateTimePicker1.Value.Date);
Program.cmd.Parameters.AddWithValue("@Unite", textBox3.Text);
Program.cmd.Parameters.AddWithValue("@Qte", Convert.ToDouble(textBox4.Text));
Program.cmd.Parameters.AddWithValue("@Prix_unitaire", Convert.ToDouble(textBox5.Text));
Program.cmd.Parameters.AddWithValue("@Montant", Convert.ToDouble(textBox6.Text));
Program.cmd.Parameters.AddWithValue("@TVA", Convert.ToDouble(comboBox1.Text));
Program.cmd.Parameters.AddWithValue("@MO", textBox8.Text);
Program.cmd.Parameters.AddWithValue("@OT", textBox9.Text);
Program.cmd.Parameters.AddWithValue("@Id_bon_reception_marche", textBox7.Text);

Richard Deeming

Сообщение об ошибке переводится следующим образом "Формат входной строки неверен."

Это означает, что одно из значений в одном из текстовых полей, которое вы пытаетесь преобразовать в число, не является допустимым числом. Вам нужно будет отладить свой код, чтобы узнать, какой именно.

Вместо того, чтобы использовать Convert.ToDouble, который вызывает исключение, если входные данные недопустимы, используйте Двойной.Метод tryparse[^] и проверьте возвращаемое значение, чтобы убедиться, что пользователь ввел действительный номер.

Richard Deeming

Кроме того, сделайте себе одолжение и дайте своим элементам управления осмысленные имена. Вы могли бы вспомнить, что textBox42 представляет сейчас но когда вы вернетесь к своему коду через шесть месяцев, у вас не будет ни малейшего понятия.

Member 13055644

Я нашел ошибку это вместо того чтобы выбрать отдельный я должен написать select top 1

И большое вам спасибо за вашу помощь это очень мило с вашей стороны сэр

1 Ответов

Рейтинг:
0

AnvilRanger

Сообщение об ошибке, формат входной строки неверен,очень ясно. Ваша команда обновления содержит ошибку. Вам нужно отладить и выяснить, что не так.

Кроме того, вы никогда не должны, и я имею в виду НИКОГДА, использовать конкатенацию строк для построения SQL-команды. Найдите в google "параметризованные запросы sql server". Научитесь любить их и всегда использовать.


Member 13055644

Вот он
вторая ошибка
Подзапрос вернул несколько значений. Это недопустимо, когда подзапрос следует за=,! =, <, <=,>,> = или когда он используется в качестве выражения.
Инструктаж был прерван.

AnvilRanger

И что же? У вас есть подзапрос, который возвращает более одного значения, скорее всего, ваш "select distinct Id_marche".

Это проблема, которую вы должны отладить и исправить. Ни я, ни кто-либо другой не может сделать для тебя ничего. У нас нет доступа к вашему компьютеру или серверу.

Member 13055644

Вы не обязаны давать мне ответ я задал вопрос людям которые мне помогут не сказав мне что это блабла
И будь немного скромнее однажды ты можешь оказаться в таком же положении как и я

AnvilRanger

В своем ответе на мой ответ вы даже не задали вопроса. Вы только что вставили еще одно сообщение об ошибке. Было ли это просто для деталей или вы хотели помочь с этой ошибкой?

Глядя на ваши вопросы и комментарии, большинство из них-это просто короткие вопросы "как мне это сделать", где вы показываете не код и меньше усилий. Это просто показывает людям на этом сайте, что вы не готовы, по крайней мере, приложить некоторые усилия, чтобы задать вопрос. Вы просто ищете законсервированный ответ, который работает без вашей мысли или эффекта. Это очень грубо, потому что люди на этом сайте делают это бесплатно.

Member 13055644

Во-первых, на этом сайте есть люди, которые попросили меня опубликовать скрипт и опубликовать ошибку именно за то, что мне понравилось это и две ошибки, которые я разместил второй на курсах исполнения как для сервиса " формат ..", так и для вопроса второго вопроса, который я задал, если вы удовлетворены моей проблемой, то это хорошо, иначе не стоит говорить T'as dit forward Mr.