Member 13475897 Ответов: 1

Сможет ли он создать список с номерами от 1 до 1000, а затем присвоить их строкам столбца таблицы данных


Привет, я создал список, который создает номер для меня. Код к списку выглядит следующим образом
List<int> add_list = new List<int>();
    for (int i = 0; i < 400; i++)
    {
        add_list.Add(i);
    }


Затем я беру каждый номер и присваиваю его столбцу заказа на продажу в моей таблице данных DataTable, которую я создал.

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

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

Я попытался записать каждое число в txt-файл на своем рабочем столе. Затем он считывает txt-файл, и если в txt-файле нет номера, то он начинается оттуда.

Есть ли более простой способ сделать это, чем то, как я это делаю?

CHill60

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

Однако идея текстового файла также должна работать ... или конфигурационный файл ... или в реестре

Member 13475897

so i just create a table and put in one column as the self incrementing identity column? I would then have to read down every number in the table and show it in my data table. How wil i only take number that have not been used before. for example i'm creating orders then i need to asign an unique order number to each order. if i just read all those numbers from sql to my list how wil i make sure im not using a duplicate. if there is about 1000 records in my table there wil be 1000 numbers so there wil be 1000 numbers in my list. How do i filter those numbers to not start from 1 again. Only way i see it possible is creating an action orders table and saving all the info in the table then with the self incrementing order number column i can read it into my datatable but i need to asign the number to an order before im saving it to sql sort of like an overview of what you purchased then they have the option(button) to save the sale to sql

CHill60

Если вы создаете заказы, то, конечно, вы храните эти заказы где-то? Если он находится в базе данных SQL просто сохраните столбец идентификаторов на самом столе заказов Вы можете немедленно создать заказ, а затем либо удалить его, либо изменить статус, если он не обрабатывается . Или вы только "назначаете" номер заказа, если они подтверждают, что они предшествуют ... вам не нужен номер заказа для предварительного просмотра покупки

Member 13475897

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

Member 13475897

Если я делаю это с помощью переменной, то могу ли я просто создавать новую запись в sql каждый раз, когда они нажимают кнопку, где хранится номер заказа?

CHill60

Ни в коем случае не делайте этого таким образом - если в базе данных есть более одного пользователя, этот метод сломается.

Member 13475897

What im doing is im creating an automated order right, then i have a data table which i let them view it in a data grid view. Up to this part ive not stored the order what so ever in sql. I then want to let them be able to delete the row way before they store it in sql so i have code that deletes the row but it searches up a spesific column in my datatable which is the ordernumber column. They then have to type in the order number in a text box which i provide and then click the delete button and it wil delete the record out of my datatable. Up to this point ive not stored anything in sql. The problem im having now i that when that order is created that shows the item and pricing and everything is that it has to automatically asign an order number to each record for the cashier to be able to delete the record. then after they are happy i write all the values in the datatable to an order table in my sql Orders table

1 Ответов

Рейтинг:
8

Maciej Los

Вы работаете с объектами в памяти... Вот почему вы теряете данные, хранящиеся в списке или datatable.

Существует несколько способов хранения данных...

1. Файлы:
- текстовый файл (*.txt),
- XML,
- прием.

2. файлы базы данных A'ka
- Файл MS Excel,
- База данных MS Access,

3. Баз данных
- MS SQL Server,
- SQLite,
- Оракул,
- PostgreSQL,
- прием.

Если вы работаете с DataTable, вы можете просто сохранить свои данные с помощью объект DataTable.Метода writexml[^] метод. Чтобы иметь возможность считывать данные из Xml, используйте Объект DataTable.Метод readxml[^] метод.

Обратите внимание, что DataTable имеет набор столбцов. Когда вы устанавливаете Автоинкремент[^] свойство для одного из них, номер заказа (OrderId) будет увеличена автоматически.

Пример:

DataColumn col1 = new DataColumn("AutoNumber", typeof(int));
col1.AutoIncrement = true;
col1.AutoIncrementSeed = 1;
col1.AutoIncrementStep = 1;
DataColumn col2 = new DataColumn("Name", typeof(string));
DataColumn col3 = new DataColumn("Age", typeof(int));

// Add columns to a new DataTable.
DataTable dt = new DataTable("table");
dt.Columns.Add(col1);
dt.Columns.Add(col2);
dt.Columns.Add(col3);

dt.Rows.Add(new object[]{null, "Damian", 22});
dt.Rows.Add(new object[]{null, "Rose", 20});
dt.Rows.Add(new object[]{null, "Angelica", 19});
dt.Rows.Add(new object[]{null, "Romeo", 21});

string myxml = @"D:\students.xml";
dt.WriteXml(myxml);
dt.Rows.Clear(); //temporary remove data
dt.ReadXml(myxml);//load again


Результат:
AutoNumber    Name        Age
1             Damian      22 
2             Rose        20 
3             Angelica    19 
4             Romeo       21 


Удачи вам!

Для получения более подробной информации, пожалуйста, прочтите эти статьи:
Сохраните и восстановите размер и местоположение вашей формы[^]
Где я должен хранить свои данные?[^]


Member 13475897

Спасибо Уил до

Member 13475897

My data table works in a spesific way, each time they click the button create order it takes the amount of water they ordered and works out the price then it shows all this info in my data table with the columns order number, amount of litres and price. the order number column is on auto increment but the problem im getting is that each time they cick the button the previous info in the data table is wiped and the new info is stored. It doesnt build up because its just a way for the cashier to view the order then the cashier can choose to save it to sql with a seperate button where my order number included is getting saved. i dont need that order number for sql purposes i need it to for the cashier to delete a record in the datagridview they dont want because they use the order number and type it in a text box provided then the record matching that order number is deleted on a seperate button click

Member 13475897

я быстро прочитал, что решение сохранить в формате XML

Maciej Los

Проверьте мой ответ еще раз и узнайте пример кода.

Member 13475897

Поэтому я не хочу хранить весь datatable только специальные номера заказов, чтобы иметь возможность читать новые номера заказов в следующий раз. Остальная информация datatable не должна быть сохранена и вызвана в следующий раз, чтобы показать ее

Maciej Los

Способ управления данными зависит от вас...
Если вы хотите "запомнить" последний номер заказа (OrderId), вы можете использовать метод, который был описан в подсказке/статье "сохранить и восстановить размер и местоположение вашей формы".