Рейтинг:
7
Prifti Constantine
Вы могли бы повторить, хотя список, который сделан для хранения внутри
List<string> subjects = new List<string>();
foreach (var item in chekBox.Items) {
subjects.Add(item.ToString());
}
string sqlcommand = "Select * from tblSubjectRates where subjectName=@SubjectName";
List<int> SubjectRates = new List<int>();
using (SqlConnection con = new SqlConnection(connectionString)) {
con.Open();
using (SqlCommand cmd = new SqlCommand(sqlcommand, con)) {
foreach (var item in subjects) {
cmd.Parameters.AddWithValue("@SubjectName", item.ToString());
var x = cmd.ExecuteScalar();
SubjectRates.Add(Convert.ToInt32(x));
}
}
int TotalSum = SubjectRates.Sum();
}
Я не знаю, сработает ли это... но попробуйте.
Я попытался сгенерировать его в своем уме, так как не знаю вашей схемы базы данных, чтобы полностью помочь вам. Просто замените ключевые слова, которые, по вашему мнению, вызовут ошибку, и я надеюсь, что эта логика сработает!
С наилучшими пожеланиями и скрестив пальцы!
Member 13289720
спасибо сэр,
но я действительно не понимал, как добавить предметную плату
**Просто я отображаю имя субъекта в checklistbox, а плата за субъект вносится в базу данных таблицы tblsubject. Итак, как я могу сделать добавление каждой темы, которую я выбираю из контрольного списка, вместо следующего кода
частная chkselectsubject_CheckedChanged недействительным(объект отправителя, EventArgs в электронной)
{
если (chkselectsubject.Проверен)
{
for (int i = 0; i < chklbselectsubject.Предметы.Граф; i++)
{
chklbselectsubject.SetItemChecked(i, true);
checkprice();
}
}
еще
{
for (int i = 0; i < chklbselectsubject.Предметы.Граф; i++)
{
chklbselectsubject.SetItemChecked(i, false);
checkprice();
}
}
}
checkprice частный недействительными ()
{
SqlConnection con = новый SqlConnection(cs. DBcon);
против.Открыть();
string strsql = " Select Sum (fee) from Subject_Master where Sub_Name='"+chklbselectsubject.Свойство selecteditems+"'";
SqlCommand cmd= new SqlCommand(strsql, con);
сумма объектов = cmd.Executescalar так();
txtTotalfee.Текст = сумма.Метод toString();
против.Закрывать();
}
но вдобавок не сделали .......Помогите плз
Prifti Constantine
Вы отладили, чтобы увидеть, какое значение chklbselectsubject.SelectedItems возвращается? На мой взгляд, из-за того, что вы впервые видите свой код, ошибка может возникнуть при выборе "chklbselectsubject". Кроме того, переменная sum не обязательно должна иметь тип object, так как sum, вероятно, будет возвращать целочисленный тип значения или в основном double, так как мы говорим о возврате типа значения из базы данных.
Member 13289720
когда я использую int sum=cmd. executeScalar()
я получил ошибку не могу неявно преобразовать тип 'object' в 'int' существует явное преобразование.а также субъект, не выбранный из условия where
как я могу это сделать
Prifti Constantine
Вы можете изменить скалярную часть execute с помощью ExecuteReader();
использование (sqlDataReader reader = cmd.Метода executereader())
{
В то время как (читатель. читать())
{
int x = преобразовать.toInt32 (reader ["price"]. toString());
}
}
или приведите executeScalar() с помощью (int) :
Sum = (int)cmd. executeScalar();
Member 13289720
да ее работа, но.....когда я не использую условие where в запросе, то все сборы вычисляются из таблицы tblsubject, я хочу только выбранную тему
как я могу использовать query because [where Sub_Name='"+chklbselectsubject.SelectedItems+"'";] он не работает
Prifti Constantine
Это потому, что chklbselectsubject.SelectedItems, вероятно, возвращает много значений в зависимости от того, сколько значений выбрал пользователь. В этой ситуации, если пользователь выбирает 2 значения, то 2 из них не могут быть переданы в качестве параметра в запросе. Что вам нужно сделать, так это взять каждое значение, одно за другим, и соответственно изменить параметры.
Я привожу вам пример:
перечислитель по каждому элементу в списке
{
[где Sub_Name='"+item.Метод toString+"'"]
}
Я надеюсь, что это достаточно ясно.
Member 13289720
спасибо, сэр, все в порядке
Prifti Constantine
Хорошего вам дня, мой друг! Продолжайте кодировать!