Импорт из Excel в MSSQL посредством С++builder
Каким образом реализовать?
Много других проблем работа, курсы...
Постараюсь все сделать правильно...я и не хочу чтобы диплом писали за меня...Надеюсь твои консультации помогут вылезти мне из серости и наконец по настоящему включить мозги..
С Уважением Владимир
P.S.
Как считаешь может стоить весь адрес город, индекс, улица, дом, офис в одну таблицу запихать, ведь адрес это не главное в моем деле...
Седня постараюсь сделать все верно, если будет время у отца ДР 50 лет исполнилось...
Так вроде все...
Так вроде все...
Вот это уже гораздо лучше. Город только можно все же вынести в справочник - но это по желанию.
Теперь поехали дальше - опиши какая информация из экселя куда предполагается. И какое решение ты принял по адресам и сотрудникам? как планируешь осуществлять ввод?
Хорошо вынес в отдельную таблицу Город с id_gorod и туда вставил id_adres, а в таблице Название_орг, заменил id_adres на id_gorod, если надо скажи сброшу обновление.
Теперь по экселю, смотрю по 1 строке, закладка ремонт:
1)Наименование:
(название)"Амоком" ООО - в таблицу Название_орг, ячейка название
2)№, дата договора:
(№договра)183-РО/2006А - в таблицу Договор, ячейка договор
(дата заключения)от17.12.05 - в таблицу Сделка, ячейка дата_заключения
3)Реквизиты, Ф. И. О. руководителя:
(должность)Директор - в таблицу Должность, ячейка должность
(Ф)Габриелян - в таблицу Сотрудники, ячейка фамилия
(И)Армен - в таблицу Сотрудники, ячейка имя
(О)Арнольдович - в таблицу Сотрудники, ячейка отчество
(индекс)650021 - в таблицу Адрес, ячейка индекс
(город)г. Кемерово - в таблицу Город, ячейка город
(улица)бр. Стоителей - в таблицу Адрес, ячейка улица
(дом)34 - в таблицу Адрес, ячейка дом
(офис)оф.212 - в таблицу Адрес, ячейка офис
(ИНН)ИНН 4205016672 - в таблицу Название_орг, ячейка ИНН
(КПП)КПП 420501001 - в таблицу Название_орг, ячейка КПП
(ОКПО) - в таблицу Название_орг, ячейка ОКПО
(ОГРН) - в таблицу Название_орг, ячейка ОГРН
(тел/факс/мыло)т.53-67-66, 53-49-52, 3-09, 8-923-617-0169 (туда же факс, мыло) - в таблицу Телефон, в ячейку номер (+ко всему надо как-то для каждого телефона/факс/мыла назначать id_contact раб/дом/сот/факс/мыло/нач_отд/Сергей Валерианович(я думаю его занести в контакты, т.к. в основном даются телефоны непосредственного руководителя)
4)Предмет договора:
(наименование)Ремонтно-строительные работы помещений, зданий и сооружений - в таблицу Договор, ячейка наименование (+ тут надо присвоить вид работ в зависимости от того из какого листа мы выгружаем данные)
5)Срок работ:
(дата начала)01.02.06 - в таблицу Сделка, ячейка дата_начала
(дата завершения)-01.05.06 - в таблицу Сделка, ячейка дата_завершения
6)Условия оплаты:
(условие)В течение 30 дн. после акта КС-2 - таблица Условие, ячейка условие
7)Сумма договора:
(сумма)1 426 186р. - в таблицу Сделка, ячейка сумма
Примерно так должно быть...
Маленько не понял суть вопроса(
Ввод куда, откуда? Вообще добавление будет осуществляться процедурой, как ты и посоветовал я ее переделаю...
Или ты спрашиваешь при импорте, какие нужно условия ставить, чтобы определенная информация заносилась в нужную таблицу? Если так, то я думал, все это осуществить через условие, например:
1)Все названия фирм начинаются с символа " - значит нужно поставить условие в СИ, если найдет символ " то эту информацию занести в таблицу Название орг, ячейка название...Ну и конечно наверное можно сделать что поиск нужно осуществлять в 1 ячейке.
2)На номер договора нужно ставить несколько условий, допустим нахождение д/с и после несколько подряд идущих символов "от" и то что поиск нужно осуществлять во 2 ячейке. (после чего занести туда-то)
3)Дата_заключения символ "от" в начале даты и то что поиск нужно осуществлять во 2 ячейке.
(опять возникает вопрос, в СКЛ дата же хранится в формате год.месяц.число, а в СИ у нас содержится число.месяцюгод, нужно конвертор поставить)(после чего занести туда-то)
4)Должность, тут возникают проблемы..( Но можно предположить, что Поиск нужно осуществлять по 3 ячейке и что это 1 строковое значение в данной ячейке, т.к. нулем оно быть не может...
5)То же самое по ФИО, это соотвественно 2,3 и 4 строковое значение в 3 ячейке.
6)Также можно осуществить добавление индекса.только + к нему нужно поставить условие, что это числовая переменная состаящая из 6 подряд идущих символов, т.к. в Екселе иногда Индекс стоит после города.
И во всех этих ячейках указать, что значения следует через пробел или запятую.(начало и конец)
7)На город можно поставить условие, что это 6 значение и то что начинается с символа "г. " (г точка пробел)
8)На улицу условие, что значение строковое может начинать с символа " ."(2 пустых символа точка) и что это 7 значение
9)На город то что это 8 значение, числовой код из 1-4 символов (думаю больше быть не может), то что после чисел может быть буква (например дом 20а)
10)На офис то что это 9 значение может начинаться с символов " ." (2 пустых символа точка), то что это числовой код из 1-5 символов и то что после чисел может быть буква (например кв 101а)..Также нужно учесть что он может принимать нулевое значение.
11)ИНН,КПП,ОГРН,ОКПО - ограничение по численности подряд идущих цифр (вроде ИНН - 10, КПП - 9, ОКПО - 8, ОГРН - 13 это исходя из данных экселя), а также что начинаются с ИНН,КПП,ОКПО,ОГРН - соотвественно.Также нужно учесть что он может принимать нулевое значение.
12)По телефонам сложнее, нужно что-то придумать к тому же нужна как то соотнести их с контактами.Определить их можно по числовому варианту (то что цифры следуют через дефис - ), в начале стоит т. или т/факс или сот.
13)Наименование работ добавляются по принципу что это очень много подряд через пробел следующих строковых переменных и то что они выбираются только из 4 ячейки
14)Дата начала выбирается из 5 ячейки числовые символы следующие через точку и то что заканчивается либо пробелом либо дефисом
15)Дата завершения выбирается из 6 ячейки числовые символы следующие через точку и начинающие с пробела и дефиса
16)Условие выбирается из 7 ячейки могут начинаться с символа В, А или число%
17)Сумма выбирается из 8 ячейкм содержит только цифры следующие через пробел оканчивающиеся символом р.
P.S.
Я не знаю что делать по поводу совмещения Ячеек Наименования и Реквизитов в Екселе...И как все-таки они соединятся Идешниками...
Вроде все...но это теория, как реализовать вопрос...
Стоп стоп стоп. Я думал мы уже этот вопрос решили и сразу на диаграме не обратил внимания. Ты действительно, как бы это сказать политкорректно, альтернативно талантлив. :)
Давай еще раз - адрес ДОЛЖЕН СОДЕРЖАТЬ id_nasv_org а не таблица организаций - id_address. И в таблице Адрес помещается id_gorod. Повторяю ще раз: И в таблице Адрес помещается id_gorod. Почему? Потому что в данном случае мы создаем справочник. Потому что название города может быть использовано во множестве адресов. Это ясно? Я посмотрю еще раз на диаграмму - возможно чтолибо я пропустил таким же образом.
http://cp.liveofan.jino-net.ru./SQL5.rar
Ок. Код для закачки я тебе подготовлю - конечно было бы гораздо проще если бы разбить ФИО, должность и прочее по отдельным полям. лано разберемся я попытаюсь показать как это можно реализовать а ты дальше сделаешь по аналогии. если успею завтра выложу
Блин тебе у нас в группе преподавать ) А то наши препады старше нас на 1 -2 года и учились программе вместе с нами...
@index int,
@ulica varchar(50),
@dom varchar(50),
@office varchar(50),
@IDGorod int,
@IDOrg int
AS
declare @IDAdres int
declare @gorod varchar(50)
declare @org varchar(50)
declare @INN varchar(50)
declare @KPP varchar(50)
declare @OKPO varchar(50)
declare @OGRN varchar(50)
set @IDGorod=(Select id_gorod from Город where город=@gorod)
set @IDOrg=(Select id_nazv_org from Название_орг where название=@org and ИНН=@INN and КПП=@KPP and ОКПО=@OKPO and ОГРН=@OGRN)
set @IDAdres=(Select id_adres from Адрес where индекс=@index and улица=@ulica and дом=@dom and офис=@office and id_gorod=@IDGorod and id_nazv_org=@IDOrg)
if @IDAdres is null begin
insert into Адрес (индекс,улица,дом,офис,id_gorod,id_nazv_org)
values (@index,@ulica,@dom,@office,@IDGorod,@IDOrg)
set @IDAdres=IDENT_CURRENT('Адрес')
end
GO
Почему не работает?
Пример, если можно и где про это почитать..
все еще жду ответа )