22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199

Перенос данных из Excel в две таблицы баз данных SQL-Server

23.06.2014, 21:13. Показов 2649. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Люди добрые помогите пожалуйста. Есть таблица Excel, я сделал перенос всех данных из нее в таблицу SQL-Server. Нужно, чтобы паралельно числовые значения из Excel попадали в другую таблицу в свою строку и свой столбец. Вот пример процедуры, при ножатии на кнопку, происходит запись информации. Ошибка во второй части, я не допонимаю. Понимаю, что надо сделать цикл, но не понимаю как.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
procedure TETSNG_Excel_Form.btn8Click(Sender: TObject);
var index, i: Integer;
begin
  index:=4;
  DataModule44.qry_DebetELS.First;
  For i:=0 to StringGrid1.RowCount-10 do
  begin
    DataModule44.qry_DebetELS.Append;
    DataModule44.dtmfld_DebetELSData_Provodki.AsString := StringGrid1.Cells[0,index];
    DataModule44.dtmfld_DebetELSData_Nacisleniua.AsString := StringGrid1.Cells[1,index];
    DataModule44.wdstrngfld_DebetELSVid_Dokumenta.AsString := StringGrid1.Cells[2,index];
    DataModule44.wdstrngfld_DebetELSNomer_Dokumenta.AsString := StringGrid1.Cells[3,index];
    DataModule44.wdstrngfld_DebetELSOperaciua.AsString := StringGrid1.Cells[4,index];
    DataModule44.wdstrngfld_DebetELSSumma.AsString := StringGrid1.Cells[6,index];
    DataModule44.wdstrngfld_DebetELSNDS_18.AsString := StringGrid1.Cells[7,index];
    DataModule44.wdstrngfld_DebetELSDoroga_Operaciu.AsString := StringGrid1.Cells[8,index];
    DataModule44.wdstrngfld_DebetELSStanciua_Operaciu.AsString := StringGrid1.Cells[9,index];
    DataModule44.wdstrngfld_DebetELSNasha_Kompaniua.AsString := DataModule1.wdstrngfldDobavkaNasheiKompani_tblKratkoe_Naimenovanie.AsString;
    DataModule44.qry_DebetELS.Post;
    Inc(index);
    DataModule44.qry_DebetELS.Next;
  end;
 
  index := 0;
  DataModule38.qryOtchetRabotu_qry.First;
  for i := 0 to DataModule38.qryOtchetRabotu_qry.RecordCount-1 do
  begin
    if DataModule38.wdstrngfldOtchetRabotu_qryNomer_Nakladnoi_Podsil.AsString = DataModule44.wdstrngfld_DebetELSNomer_Dokumenta.AsString then
    begin
      DataModule38.qryOtchetRabotu_qry.Edit;
      DataModule38.bcdfldOtchetRaboti_tblTarif_Podsila_PorojnVag_RF.AsString := StringGrid1.Cells[6,index];
      DataModule38.qryOtchetRabotu_qry.Post;
      Inc(index);
      DataModule38.qryOtchetRabotu_qry.Next;
    end;
  end;
 
  btn3.Visible := False;
  btn4.Visible := False;
  btn5.Visible := False;
  btn7.Visible := False;
 
  
  ETSNG_Excel_Form.Close;
end;
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.06.2014, 21:13
Ответы с готовыми решениями:

Создание многозвенного приложения для обработки баз данных SQL server.
Всем здравствуйте. Я хочу в приложении для обработки БД предоставить выбор имени базы данных пользователем. Хочу сделать так, чтобы в...

Перенос данных из StringGrid в SQL-Server
Добрый день, у меня на форме находятся stringgrid и две кнопки. В гриде отображаются данные из таблицы скуля. При нажатии на одну кнопку...

Перенос данных из одинаковых таблиц разных баз данных
Всем привет! У меня такой вопрос - есть 2 базы данных, в которых некоторые таблицы совпадают. Одна база находится на локальном компьютере,...

13
22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199
29.06.2014, 12:38  [ТС]
Люди не молчите, пожалуйста. Помогите.
Есть база данных на SQL-server, надо в ней в одном столбце сделать добавку данных, а добавление данных берется из Excel. Помогите написать правильный код для переноса и сохранения данных. Пожалуйста.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
29.06.2014, 12:47
Какая ошибка?
И значения из DataModule38 сравниваются всегда с одним и тем же значением из DataModule44.
Это так и задумано?
0
22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199
29.06.2014, 13:19  [ТС]
Смотри, с помощью кнопки btn8 сохраняю данные в таблице DataModule44 из Excel.
В DataModule44 есть столбец "DebetELSSumma".
Мне надо, что бы данные из Excel перенести всем списком в DataModule44, это я уже сделал.
А второй шаг, чтобы данные из Excel, всего списка, выборочно попадали в другую таблицу DataModule38, в определенное поле.
Вот немного переделал код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
procedure TETSNG_Excel_Form.btn8Click(Sender: TObject);
var index, i: Integer;
begin
  index:=4;
  DataModule44.qry_DebetELS.First;
  For i:=0 to StringGrid1.RowCount-10 do
  begin
    DataModule44.qry_DebetELS.Append;
    DataModule44.dtmfld_DebetELSData_Provodki.AsString := StringGrid1.Cells[0,index];
    DataModule44.dtmfld_DebetELSData_Nacisleniua.AsString := StringGrid1.Cells[1,index];
    DataModule44.wdstrngfld_DebetELSVid_Dokumenta.AsString := StringGrid1.Cells[2,index];
    DataModule44.wdstrngfld_DebetELSNomer_Dokumenta.AsString := StringGrid1.Cells[3,index];
    DataModule44.wdstrngfld_DebetELSOperaciua.AsString := StringGrid1.Cells[4,index];
    DataModule44.wdstrngfld_DebetELSSumma.AsString := StringGrid1.Cells[6,index];
    DataModule44.wdstrngfld_DebetELSNDS_18.AsString := StringGrid1.Cells[7,index];
    DataModule44.wdstrngfld_DebetELSDoroga_Operaciu.AsString := StringGrid1.Cells[8,index];
    DataModule44.wdstrngfld_DebetELSStanciua_Operaciu.AsString := StringGrid1.Cells[9,index];
    DataModule44.wdstrngfld_DebetELSNasha_Kompaniua.AsString := DataModule1.wdstrngfldDobavkaNasheiKompani_tblKratkoe_Naimenovanie.AsString;
    DataModule44.qry_DebetELS.Post;
 
    Inc(index);
    DataModule44.qry_DebetELS.Next;
  end;
 
  index := 4;
  DataModule38.qryOtchetRabotu_qry.First;
  For i:=0 to StringGrid1.RowCount-10 do
  begin
    DataModule38.qryOtchetRabotu_qry.Active := False;
    DataModule38.qryOtchetRabotu_qry.SQL.Clear;
    DataModule38.qryOtchetRabotu_qry.SQL.Add('SELECT *');
    DataModule38.qryOtchetRabotu_qry.SQL.Add('FROM OtchetRaboti_Table');
    DataModule38.qryOtchetRabotu_qry.SQL.Add('WHERE Nasha_Kompaniua LIKE '''+DataModule1.wdstrngfldDobavkaNasheiKompani_tblKratkoe_Naimenovanie.AsString+''' and Nomer_Nakladnoi_Podsil LIKE '''+StringGrid1.Cells[3,index]+'''');
    DataModule38.qryOtchetRabotu_qry.Active := True;
 
    DataModule38.qryOtchetRabotu_qry.Append;
    DataModule38.qryOtchetRabotu_qry.Edit;
    DataModule38.bcdfldOtchetRaboti_tblTarif_Podsila_PorojnVag_RF.AsString := DataModule44.wdstrngfld_DebetELSSumma.AsString;
    DataModule38.qryOtchetRabotu_qry.Post;
    Inc(index);
    DataModule38.qryOtchetRabotu_qry.Next;
 
  end;
 
  btn3.Visible := False;
  btn4.Visible := False;
  btn5.Visible := False;
  btn7.Visible := False;
 
 
  ETSNG_Excel_Form.Close;
end;
Пришит ошибку: Dataset not in edit or insert mode
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
29.06.2014, 14:04
А Append зачем, да еще перед Edit?
0
22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199
29.06.2014, 14:50  [ТС]
я уже по всякому пробывал, убал Apped, ошибка таже
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
29.06.2014, 15:15
Судя по названию, ты переводишь в режим редактирования одну таблицу (qryOtchetRabotu_qry), а изменения пытаешься вносить в другую (tblTarif).
0
22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199
29.06.2014, 15:40  [ТС]
Я тебя немного не понимаю, в чем или где ты увидел, что я
Цитата Сообщение от FIL Посмотреть сообщение
переводишь в режим редактирования одну таблицу, а изменения пытаешься вносить в другую.
Проблема, ошибка, возникает тут:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  index := 4;
  DataModule38.qryOtchetRabotu_qry.First;
  For i:=0 to StringGrid1.RowCount-10 do
  begin
    DataModule38.qryOtchetRabotu_qry.Active := False;
    DataModule38.qryOtchetRabotu_qry.SQL.Clear;
    DataModule38.qryOtchetRabotu_qry.SQL.Add('SELECT *');
    DataModule38.qryOtchetRabotu_qry.SQL.Add('FROM OtchetRaboti_Table');
    DataModule38.qryOtchetRabotu_qry.SQL.Add('WHERE Nasha_Kompaniua LIKE '''+DataModule1.wdstrngfldDobavkaNasheiKompani_tblKratkoe_Naimenovanie.AsString+''' and Nomer_Nakladnoi_Podsil LIKE '''+StringGrid1.Cells[3,index]+'''');
    DataModule38.qryOtchetRabotu_qry.Active := True;
 
    DataModule38.qryOtchetRabotu_qry.Edit;
    DataModule38.bcdfldOtchetRaboti_tblTarif_Podsila_PorojnVag_RF.AsString := DataModule44.wdstrngfld_DebetELSSumma.AsString;
    DataModule38.qryOtchetRabotu_qry.Post;
    Inc(index);
    DataModule38.qryOtchetRabotu_qry.Next;
 
  end;
Я менял
DataModule38.bcdfldOtchetRaboti_tblTarif _Podsila_PorojnVag_RF.AsString := DataModule44.wdstrngfld_DebetELSSumma.As String;
на
DataModule38.bcdfldOtchetRaboti_tblTarif _Podsila_PorojnVag_RF.AsString := StringGrid1.Cells[6,index];

Ошибка та же.

Добавлено через 15 минут
FIL, если ты понял в чем проблема, напиши, что надо сделать
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
29.06.2014, 15:56
Поле bcdfldOtchetRaboti_tblTarif_Podsila_Poro jnVag_RF к какому ДатаСету относится?
0
22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199
29.06.2014, 16:05  [ТС]
DataModule38.qryOtchetRabotu_qry
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
29.06.2014, 16:13
Лучший ответ Сообщение было отмечено kabachok как решение

Решение

Цитата Сообщение от kabachok Посмотреть сообщение
DataModule38.qryOtchetRabotu_qry
Тогда бы ошибки такой не было.

Добавлено через 4 минуты
Да и в принципе это не возможно, т.к. список полей этого ДатаСета формируется в рантайм при выполнении запроса.
1
22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199
29.06.2014, 16:17  [ТС]
Молоток, спасибо, получилось. Я ято голову ломал. Вот как надо было сделать. Спасибо за намеки.

Добавлено через 1 минуту
Вот как я должен был написать:
Delphi
1
DataModule38.qryOtchetRabotu_qry.FieldByName('Tarif_Podsila_PorojnVag_RF').AsString := DataModule44.wdstrngfld_DebetELSSumma.AsString;
Добавлено через 1 минуту
А вторую фразу я не понял
Цитата Сообщение от FIL Посмотреть сообщение
Да и в принципе это не возможно, т.к. список полей этого ДатаСета формируется в рантайм при выполнении запроса.
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
29.06.2014, 16:47
Названия полей вида bcdfldOtchetRaboti_tblTarif_Podsila_Poro jnVag_RF существуют только для полей, добавленных в дизайнере.
А у тебя поля в qryOtchetRabotu_qry определяются запросом в ходе выполнения программы. Следовательно, таким образом к ним обращаться уже нельзя - надо через, например, FieldByName.
1
22 / 4 / 1
Регистрация: 25.03.2012
Сообщений: 199
29.06.2014, 16:50  [ТС]
Да я понял, спасибо, буду дальше писать свою програмку и тестировать ее. Ты мне сильно помог
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2014, 16:50
Помогаю со студенческими работами здесь

Перенос баз данных
Всем привет! Есть программка на делфи, которая использует базы данных. Как можно перенести ее и базы на другой комп, и можна...

Список баз данных SQL-сервера
Как список имен таблиц SQL сервера загнать в combobox? Получить их могу, только они отображаются в dbGrid. Пробовал указать DataSource у...

Перенос баз данных с одного sql server на другой
Добрый день. Такая проблема: Я и мой товарищь пытаемся обменятся данными из бд по сети, через отправку backup-ов друг другу. Проблема в...

Создание запросов баз данных в MS SQL Server
КТО МОЖЕТ ПОЖАЛУЙСТА ПОМОГИТЕ СДЕЛАТЬ ЛАБУ. Создание запросов в SQL Вариант № 7 — База данных видео проката 1.Сотрудники (Код...

Просмотр баз данных SQL Server 2000
Подскажите чем можно просмотреть базы данных SQL Server'a?? (Таблицы, поля, записи)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

Новые блоги и статьи
Интеграция Hangfire с RabbitMQ в проектах C#.NET
stackOverflow 18.04.2025
Разработка современных . NET-приложений часто требует выполнения задач "за кулисами". Это может быть отправка email-уведомлений, генерация отчётов, обработка загруженных файлов или синхронизация. . .
Построение эффективных запросов в микросервисной архитектуре: Стратегии и практики
ArchitectMsa 18.04.2025
Микросервисная архитектура принесла с собой много преимуществ — возможность независимого масштабирования сервисов, технологическую гибкость и четкое разграничение ответственности. Но как часто бывает. . .
Префабы в Unity: Использование, хранение, управление
GameUnited 18.04.2025
Префабы — один из краеугольных элементов разработки игр в Unity, представляющий собой шаблоны объектов, которые можно многократно использовать в различных сценах. Они позволяют создавать составные. . .
RabbitMQ как шина данных в интеграционных решениях на C# (с MassTransit)
stackOverflow 18.04.2025
Современный бизнес опирается на множество специализированных программных систем, каждая из которых заточена под решение конкретных задач. CRM управляет отношениями с клиентами, ERP контролирует. . .
Типы в TypeScript
run.dev 18.04.2025
TypeScript представляет собой мощное расширение JavaScript, которое добавляет статическую типизацию в этот динамический язык. В JavaScript, где переменная может свободно менять тип в процессе. . .
Погружение в Kafka: Концепции и примеры на C# с ASP.NET Core
stackOverflow 18.04.2025
Apache Kafka изменила подход к обработке данных в распределенных системах. Эта платформа потоковой передачи данных выходит далеко за рамки обычной шины сообщений, предлагая мощные возможности,. . .
Коммуникация в реальном времени с SignalR в C# на примере создания чата
UnmanagedCoder 17.04.2025
Современный веб стремительно эволюционирует от статичных страниц к динамичным приложениям, где пользователи ожидают мгновенной реакции на свои действия. Представим, что вы отправляете сообщение. . .
Реализация CQRS с MediatR на C# .NET
stackOverflow 17.04.2025
Современная разработка программного обеспечения постоянно ищет пути повышения эффективности организации кода. Архитектурные паттерны появляются, эволюционируют, и те, что проявляют свою. . .
Verilog и интеллектуальная собственность - "глазами" обученной LM модели.
Hrethgir 17.04.2025
В сети встречаются участники, заявляющие что код на Verilog ни о чём не говорит. Но вот патентная практика на самом деле показывает обратное ими утверждаемому. То-есть код на Verilog включают в. . .
Свап-файл дополнительно к разделу (если вдруг не хватает или не создан)
jigi33 17.04.2025
ПОДКЛЮЧЕНИЕ ДОПОЛНИТЕЛЬНОГО SWAP ПРОСТРАНСТВА, Т. О. , РАСШИРЕНИЕ ЕГО РАЗМЕРА В Linux можно использовать как раздел подкачки (swap), так и файл подкачки (swap-файл). Чтобы создать swap-файл вместо. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru