1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

Тема в разделе "Базы данных и администрирование", создана пользователем 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
    Именно так, вот пример моей базы и самого Ексель документа...
    Что я не так делаю не пойму
    Код:
    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
    Все названия таблиц написанны на русском, это допускается...я вот боюсь не заругается ли Билдер
    или Импорт?
    Вот моя База
    Код:
    http://cp.liveofan.jino-net.ru./SQL.rar
    -- старая версия
    Код:
    http://cp.liveofan.jino-net.ru./SQL1.rar
    -- седня обновил ее, новая версия
     
  20. Levi

    Levi Гость

    Репутация:
    0
    Передаю данные из Екселя в МССКЛ:
    Код:
    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'


    Если же процедуру пишу в Базе
    Код:
    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
    Код:
    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'

    Что не так делаю?
     
Загрузка...
Статус темы:
Закрыта.

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