Импорт из Excel в Mssql посредством С++builder

Тема в разделе "SQL", создана пользователем Levi, 14 май 2007.

Статус темы:
Закрыта.
  1. Levi

    Levi Гость

    Репутация:
    0
    Импорт из Excel в MSSQL посредством С++builder
    Как реализовать?
     
  2. LAW

    LAW Гость

    Репутация:
    0
    Для доступа к Excel можно воспользоваться билдеровскими компонентом, либо создать объект через OLE. И первый и второй способы обсуждались здесь ранее. Ну а с укладкой взятых данных в MS SQL проблем быть не должно.
    Если что пиши.

    Удачи.
     
  3. Levi

    Levi Гость

    Репутация:
    0
    Через ОЛЕ объет это понятно, у меня другая проблема (
    Нужно информацию которая в Екселе полностью занести в готовую БД
    Строки из Екселя сгруппированы большей своей частью и поэтому не совпдают с существующими таблицами в БД, т.к. там строки разделенны на каждую таблицу отдельно (например в екселе в одно строке хранятся улица, дом, офис, а в БД улица, дом и офис это отдельные таблицы), поэтому надо как то запихнуть данные из Екселя в эти таблицы...
    Даже без помощи Билдера, просто сделать Импорт, подскажите как это реализовать?
     
  4. LAW

    LAW Гость

    Репутация:
    0
    Вообще, по первончальному вопросу и не скажешь.

    Разбирать строки прийдётся значит. Если есть вменяемый разделитель, например запятая или поле фиксированной длинны, то разберётся, а иначе только словарём названий городов, улиц, только тут уже 100% точности разбора не добиться.
     
  5. Levi

    Levi Гость

    Репутация:
    0
    Все данные импортировал в СКЛ, через встроенный в него функцию Импорт...
    Там сформировалась одна большая таблица со множеством значений...
    Как теперь разделить Строки из Екселя на отдельные составляющие (сейчас там такое творится в одной строке хранятся улица, дом, офис, и занести их в необходимые таблицы, т.к в БД улица, дом и офис это отдельные таблицы...
    Можно пример?
     
  6. Barmutik

    Barmutik Гость

    Репутация:
    0
    Вам же уже дал ответ на этот вопрос уважаемый LAW... сейчас вместо Экселя парсите значение поля в БД и разносите его на несколько полей в других таблицах... что конкретно у Вас вызывает проблемы ?
     
  7. Levi

    Levi Гость

    Репутация:
    0
    Как занести Идешники?
    Допустим значения разбросал по таблицам, как их соединить ключами?
     
  8. LAW

    LAW Гость

    Репутация:
    0
    Структуру связей нужно строить при анализе записей Вашей выгрузки из Excel.
     
  9. Barmutik

    Barmutik Гость

    Репутация:
    0
    Ну предполагается что в таблицах у Вас есть уникальные ключи .. настройте между таблицами связи.. или ручками или с помощью SQL команд...
     
  10. Levi

    Levi Гость

    Репутация:
    0
    Еще вопрос, у меня очень много нулевых значений получается.
    Например в Екселе хранится информация в одной ячейки:
    Должность, ФИО, индекс, город, улица, дом, офис, тел1, тел2, сот_тел, факс, е-майл, ИНН, КПП, ОГРН, ОКПК
    Так вот эти значения могут быть нулями в различном порядке: тел1, тел2, со_тел, факс, е-майл, ИНН, КПП, ОГРН.
    Получается мне все нужно будет вручную делать? Автоматически нельзя будет реализовать?
     
  11. Levi

    Levi Гость

    Репутация:
    0
    Функция Дата Импорт в СКЛ - > Выбо моего Ексель документа - > Предоставил мне 1 таблицу со всеми значениями, которые необходимо нужно было выбрать - > Нажал кнопку импортировать
    Что не так?
     
  12. Barmutik

    Barmutik Гость

    Репутация:
    0
    Судя по всему там просто все данные находятся в одном столбце и разделены сепараторами.. так что стандартный MS SQL импорт врядли поможет...
     
  13. Levi

    Levi Гость

    Репутация:
    0
    Barmutik
    Именно так, вот пример моей базы и самого Ексель документа...
    Что я не так делаю не пойму
    Код (Text):
    http://cp.liveofan.jino-net.ru./SQL.rar
     
  14. Barmutik

    Barmutik Гость

    Репутация:
    0
    Ну .. формат очень легко разбираемый .. так что писать ручками парсер и загонят ьв БД .. работы на пару часов как максимум...

    Стандартный импортировщик Вам тут не поможет...
     
  15. Barmutik

    Barmutik Гость

    Репутация:
    0
    Для: sax_ol

    Ещё не факт что займёт боьлше времени .. подготовка данных и тесты что бы правильно загнались или написание парсера и загон по текущим данным :) :)
     
  16. Levi

    Levi Гость

    Репутация:
    0
    Это операция не одноразовая (
    Я с таким не сталкивался ни разу, а препаду либо сами не знают, как делать либо просто не хотят помогать, по крайней мере, отнекиваются словами - это ваше задание и мы не можем вам ничем помочь...
    Учитывая то что они мне это задание дали сами...
    P.S.
    И почему то другим студентам из моей группы, насколько я знаю, они помогли с их задачамми по Экспроту в Ворд и Эксель из их баз ...
    Дайте наводку где искать...
    Или опишите пошагово что мне необходимо сделать..если это неоднократная операция
    Пример кода, если возможно...
     
  17. Levi

    Levi Гость

    Репутация:
    0
    Кстати то что у меня название таблиц и полей по русски, нормально отразится или лучше их переименовать на аглийском?
     
  18. Barmutik

    Barmutik Гость

    Репутация:
    0
    Ммм... а как Вы их исхитрились создать на русском в MS SQL? Насколько я в курсе это недопускается...
     
  19. Levi

    Levi Гость

    Репутация:
    0
    Все названия таблиц написанны на русском, это допускается...я вот боюсь не заругается ли Билдер
    или Импорт?
    Вот моя База
    Код (Text):
    http://cp.liveofan.jino-net.ru./SQL.rar
    -- старая версия
    Код (Text):
    http://cp.liveofan.jino-net.ru./SQL1.rar
    -- седня обновил ее, новая версия
     
  20. Levi

    Levi Гость

    Репутация:
    0
    Передаю данные из Екселя в МССКЛ:
    Код (Text):
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    ADOQuery2->SQL->Clear();
    ADOQuery2->SQL->Add("Insert into TexПер (Название_орг,Договор,Сотрудники,Адрес,Телефон,Наименование,Срок_работ,Услови
    е) values (@org,@dog,@sotrud,@adres,@tel,@naimen,@srok,@usl)");
    //AnsiString tmp_org="", tmp_dog="", tmp_sotrud="", tmp_adres="", tmp_tel="", tmp_naimen="", tmp_srok="", tmp_usl=""; //Здесь создаешь
    //временные переменные для всех полей которые не должны быть(NB!!!)пустыми
    ADOQuery2->Active = true;
    while(!ADOQuery1->Eof){


    ADOQuery2->Parameters->ParamByName("@org")->Value = ADOQuery1->Fields->Fields[1]->Value;
    ADOQuery2->Parameters->ParamByName("@dog")->Value = ADOQuery1->Fields->Fields[2]->Value;
    ADOQuery2->Parameters->ParamByName("@sotrud")->Value =ADOQuery1->Fields->Fields[3]->Value;
    ADOQuery2->Parameters->ParamByName("@adres")->Value = ADOQuery1->Fields->Fields[4]->Value;
    ADOQuery2->Parameters->ParamByName("@tel")->Value = ADOQuery1->Fields->Fields[5]->Value;
    ADOQuery2->Parameters->ParamByName("@naimen")->Value =ADOQuery1->Fields->Fields[6]->Value;
    ADOQuery2->Parameters->ParamByName("@srok")->Value =ADOQuery1->Fields->Fields[7]->Value;
    ADOQuery2->Parameters->ParamByName("@usl")->Value =ADOQuery1->Fields->Fields[8]->Value;



    ADOQuery2->ExecSQL();
    ADOQuery1->Next(); }
    Выдает ошибку при попытке импорта
    must declare variable '@org'


    Если же процедуру пишу в Базе
    Код (Text):
    CREATE PROCEDURE DobavIm
    @org varchar(50),
    @dog varchar(50),
    @sotrud varchar(50),
    @adres varchar(50),
    @tel varchar(50),
    @naimen varchar(50),
    @srok varchar(50),
    @usl varchar(50)
    AS
    Insert into TexПер (Название_орг,Договор,Сотрудники,Адрес,Телефон,Наименование,Срок_работ,Услови
    е) values (@org,@dog,@sotrud,@adres,@tel,@naimen,@srok,@usl)
    GO
    Код (Text):
    ADOQuery2->Active = true;
    while(!ADOQuery1->Eof){


    ADOQuery2->Parameters->ParamByName("@org")->Value = ADOQuery1->Fields->Fields[1]->Value;
    ADOQuery2->Parameters->ParamByName("@dog")->Value = ADOQuery1->Fields->Fields[2]->Value;
    ADOQuery2->Parameters->ParamByName("@sotrud")->Value =ADOQuery1->Fields->Fields[3]->Value;
    ADOQuery2->Parameters->ParamByName("@adres")->Value = ADOQuery1->Fields->Fields[4]->Value;
    ADOQuery2->Parameters->ParamByName("@tel")->Value = ADOQuery1->Fields->Fields[5]->Value;
    ADOQuery2->Parameters->ParamByName("@naimen")->Value =ADOQuery1->Fields->Fields[6]->Value;
    ADOQuery2->Parameters->ParamByName("@srok")->Value =ADOQuery1->Fields->Fields[7]->Value;
    ADOQuery2->Parameters->ParamByName("@usl")->Value =ADOQuery1->Fields->Fields[8]->Value;



    ADOQuery2->ExecSQL();
    ADOQuery1->Next(); }
    То выдает тоже самое must declare variable '@org'

    Что не так делаю?
     
Загрузка...
Похожие Темы - Импорт из Excel
  1. toli4sky
    Ответов:
    27
    Просмотров:
    3.362
  2. GeorgiyRodionov
    Ответов:
    2
    Просмотров:
    2.973
  3. Oksana
    Ответов:
    3
    Просмотров:
    7.719
  4. abdurtim
    Ответов:
    0
    Просмотров:
    255
  5. ToxaRat
    Ответов:
    11
    Просмотров:
    829
Статус темы:
Закрыта.

Поделиться этой страницей