none
Сумма в базе данных sql compact столбец чисел сортированный по дате RRS feed

Ответы

  • Добрый день,

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

    Подскажите, где ошибка, я привел код, но он не совсем правильный

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

    • Помечено в качестве ответа georgushek 2 декабря 2018 г. 10:48
    15 марта 2016 г. 5:20

Все ответы

  • Примерно так:

    SELECT SUM([Имя столбца]) AS "Псевдоним" FROM TableName WHERE
    [Date] > ... AND [DATE] < ...


    Сделаем содержимое сообщества лучше, вместе!

    14 февраля 2016 г. 18:57
    Модератор
  • Если нет других причин использовать для этой задачи C#, проще написать T-SQL запрос и уже его результаты использовать в C#:

    Таблица:
    Value   Date 
    1_____2.2.16
    2_____3.2.16
    6_____5.3.16


    Запрос:
    SELECT   SUM(Value) as SUM, CONCAT(YEAR(Date)," ",MONTH(Date)) as Month    FROM Table
    GROUP BY Month ASC

    Результат:
    SUM Month
    3___16.2
    6___16.3



    • Изменено Ruslan Sakhipov 14 февраля 2016 г. 19:09
    • Предложено в качестве ответа Ruslan Sakhipov 14 февраля 2016 г. 19:09
    14 февраля 2016 г. 19:06
  • У меня это встроенная БД в vs 2008, sql compact, файл с расширением sdf и она подключена к форме в vs 2008, я бы хотел это делать в программе, я использовал средства vs 2008 для ее создания, можно это сделать не используя язык запросов sql. Вы не могли бы написать этот алгоритм в С#, пожалуйста!
    16 февраля 2016 г. 3:37
  • 1. Запрашиваем данные 
    2. Сохраняем в таблицу A
    3. Вычисляем таблицу B уже с группировкой

    Класс таблицы A
    public class Values
    {
    public double Value;
    public DateTime Date; 
    }

    Класс таблицы B не нужен, можно просто словарем обойтись.

    List<A> data = ..получение из БД..
    Dictionary<string, double> result = new Dictionary<string, double>();
    foreach(var row in data)
    {
    var month = row.Date.Year+"."+row.Date.Month;
    if(!result.ContainsKey(month))
    result[month] = row.Value;
    else
    result[month]+=row.Value;
    }
    // Вывод результата 
    foreach(KeyValuePair<string,double> pair in result)
    {
    Console.WriteLine(pair.Key+" "+pair.Value);
    }

    • Предложено в качестве ответа Ruslan Sakhipov 16 февраля 2016 г. 7:51
    • Изменено Ruslan Sakhipov 16 февраля 2016 г. 10:10
    16 февраля 2016 г. 7:51
  • у меня одна таблица и я хочу вывод в textBox, есть два столбца в таблице, один с датами, другой просто с цифрами, эти цифры нужно сложить, только за определенный месяц, это должно происходить при нажатии кнопки, наверное нужно добавить еще один textBox для фильтрации по месяцу? Как вы думаете?
    18 февраля 2016 г. 4:19
  • Добрый вечер! Ну, подскажите пожалуйста, очень надо)
    20 февраля 2016 г. 18:00
  • Доброе утро!
    25 февраля 2016 г. 4:32
  • Добрый вечер!

    Вот вариант алгоритма:

    using

    System;


    using

    System.Collections.Generic;


    using

    System.ComponentModel;


    using

    System.Data;


    using

    System.Drawing;


    using

    System.Text;


    using

    System.Windows.Forms;



    namespace

    Uchet

    {

       

    publicpartialclassForm1: Form


        {

           

    publicForm1()

            {

                InitializeComponent();

            }

     

           

    privatevoidbutton1_Click(objectsender, EventArgse)

            {

                Close();

            }

     

     

           

    privatevoidEnter1(objectsender, KeyEventArgse)

            {

               

    for(inti = 0; i < учет_документовDataGridView.RowCount; i++)

                   

    if(учет_документовDataGridView[0, i].FormattedValue.ToString().Contains(textBox2.Text.Trim()))

                    {

                        учет_документовDataGridView.CurrentCell = учет_документовDataGridView[0, i];

                       

    return;

                    }

            }

         

         

        

          

           

    privatevoidForm1_Load_1(objectsender, EventArgse)

            {

               

    // TODO: данная строка кода позволяет загрузить данные в таблицу "uchetDataSet.Учет_документов". При необходимости она может быть перемещена или удалена.


               

    this.учет_документовTableAdapter.Fill(this.uchetDataSet.Учет_документов);

               

               

              

               

              

              

               

            }

           

    privatevoidbutton1_Click_1(objectsender, EventArgse)

            {

                Close();

            }

           

    privatevoidучет_документовBindingNavigatorSaveItem_Click(objectsender, EventArgse)

            {

               

    this.Validate();

               

    this.учет_документовBindingSource.EndEdit();

               

    this.tableAdapterManager.UpdateAll(this.uchetDataSet);

            }

           

    privatevoidbutton2_Click(objectsender, EventArgse)

            {

                   

    intT =0;

               

    foreach(DataRowr in  uchetDataSet.Учет_документов.Rows)

                {  

    // DBNull


                   

    DateTimed = (DateTime)r["Реальная дата выполнения работы"];

                   

    if( d.Month == comboBox1.SelectedIndex + 1 )

                        T += (

    int)r["Трудоемкость"];

                   

                }

                textBox1.Text = T.ToString();

            }

          

     

          

           

           

          

          

         

         

         

        

          

         

     

     

        

          

     

        

         

      

     

            }

        

         

         

         

        }

    Как обойти пустые строчки и у меня не получается передать в combobox1 месяцы, чтобы потом выбрать месяц и посчитать норм/часы за месяц?

    27 февраля 2016 г. 19:15
  • Добрый вечер!

    Вот вариант алгоритма:

    using

    System;


    using

    System.Collections.Generic;


    using

    System.ComponentModel;


    using

    System.Data;


    using

    System.Drawing;


    using

    System.Text;


    using

    System.Windows.Forms;



    namespace

    Uchet

    {

       

    publicpartialclassForm1: Form


        {

           

    publicForm1()

            {

                InitializeComponent();

            }

     

           

    privatevoidbutton1_Click(objectsender, EventArgse)

            {

                Close();

            }

     

     

           

    privatevoidEnter1(objectsender, KeyEventArgse)

            {

               

    for(inti = 0; i < учет_документовDataGridView.RowCount; i++)

                   

    if(учет_документовDataGridView[0, i].FormattedValue.ToString().Contains(textBox2.Text.Trim()))

                    {

                        учет_документовDataGridView.CurrentCell = учет_документовDataGridView[0, i];

                       

    return;

                    }

            }

         

         

        

          

           

    privatevoidForm1_Load_1(objectsender, EventArgse)

            {

               

    // TODO: данная строка кода позволяет загрузить данные в таблицу "uchetDataSet.Учет_документов". При необходимости она может быть перемещена или удалена.


               

    this.учет_документовTableAdapter.Fill(this.uchetDataSet.Учет_документов);

               

               

              

               

              

              

               

            }

           

    privatevoidbutton1_Click_1(objectsender, EventArgse)

            {

                Close();

            }

           

    privatevoidучет_документовBindingNavigatorSaveItem_Click(objectsender, EventArgse)

            {

               

    this.Validate();

               

    this.учет_документовBindingSource.EndEdit();

               

    this.tableAdapterManager.UpdateAll(this.uchetDataSet);

            }

           

    privatevoidbutton2_Click(objectsender, EventArgse)

            {

                   

    intT =0;

               

    foreach(DataRowr in  uchetDataSet.Учет_документов.Rows)

                {  

    // DBNull


                   

    DateTimed = (DateTime)r["Реальная дата выполнения работы"];

                   

    if( d.Month == comboBox1.SelectedIndex + 1 )

                        T += (

    int)r["Трудоемкость"];

                   

                }

                textBox1.Text = T.ToString();

            }

          

     

          

           

           

          

          

         

         

         

        

          

         

     

     

        

          

     

        

         

      

     

            }

        

         

         

         

        }

    Как обойти пустые строчки и у меня не получается передать в combobox1 месяцы, чтобы потом выбрать месяц и посчитать норм/часы за месяц?


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Uchet
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
    
            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }
    
    
    
            private void Enter1(object sender, KeyEventArgs e)
            {
                for (int i = 0; i < учет_документовDataGridView.RowCount; i++)
                    if (учет_документовDataGridView[0, i].FormattedValue.ToString().Contains(textBox2.Text.Trim()))
                    {
                        учет_документовDataGridView.CurrentCell = учет_документовDataGridView[0, i];
                        return;
                    }
            }
    
          
    
          
    
         
    
           
    
            private void Form1_Load_1(object sender, EventArgs e)
            {
                // TODO: данная строка кода позволяет загрузить данные в таблицу "uchetDataSet.Учет_документов". При необходимости она может быть перемещена или удалена.
                this.учет_документовTableAdapter.Fill(this.uchetDataSet.Учет_документов);
                
                
               
                
               
               
                
    
            }
    
            private void button1_Click_1(object sender, EventArgs e)
            {
                Close();
            }
    
            private void учет_документовBindingNavigatorSaveItem_Click(object sender, EventArgs e)
            {
                this.Validate();
                this.учет_документовBindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(this.uchetDataSet);
    
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                    int T =0;
                foreach(DataRow r in  uchetDataSet.Учет_документов.Rows)
                {   // DBNull
                    DateTime d = (DateTime)r["Реальная дата выполнения работы"];
                    if ( d.Month == comboBox1.SelectedIndex + 1 )
                        T += (int)r["Трудоемкость"];
                    
                }
    
                textBox1.Text = T.ToString();
            }
    
            
    
    
            }
    
         
    
          
    
          
    
          
        }
    

    27 февраля 2016 г. 19:21
  • Что никто не может помочь?
    6 марта 2016 г. 23:04
  • Доброе утро! Подскажите, где ошибка, я привел код, но он не совсем правильный
    15 марта 2016 г. 4:16
  • Добрый день,

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

    Подскажите, где ошибка, я привел код, но он не совсем правильный

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

    • Помечено в качестве ответа georgushek 2 декабря 2018 г. 10:48
    15 марта 2016 г. 5:20