• 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

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

  • Автор темы Автор темы Levi
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Параметры в SQL строке пишутся с символом ":" например:
INSERT INTO TABLE (FIELD1,FIELD2) values (:VAL1,:VAL2,:VAL3)
 
Почему это всегда вроде @ была, по крайней мере у меня так все работает...
 
Для: Levi
посмотри что в строке
ADOQuery2->Parameters->ParamByName("@org")->Value = ADOQuery1->Fields->Fields[1]->Value;
в параметр ложится. может быть null?
 
Нет не должно быть нулевых значений, Ексель документ полностью заполнен...
И нормально отображается в DBGride...
Вот он
В БД создал сам таблицу со всеми полями, которые описанны в запросе на вставку, они пустые, таблица без ИД... (тип всех полей варчар)
P.S.
Убрал строку ADOQuery2->Active = true;
Теперь пишет что не найден параметр @org...
 
Все с этим разобрался, теперь работает в одну таблицу пихает все
Код:
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Add("Insert into perev (Название_орг, Договор, Сотрудники, Адрес, Телефон, Наименование, Срок_работ, Условие) 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[0]->Value;
ADOQuery2->Parameters->ParamByName("dog")->Value=ADOQuery1->Fields->Fields[1]->Value;
ADOQuery2->Parameters->ParamByName("sotrud")->Value=ADOQuery1->Fields->Fields[2]->Value;
ADOQuery2->Parameters->ParamByName("adres")->Value=ADOQuery1->Fields->Fields[3]->Value;
ADOQuery2->Parameters->ParamByName("tel")->Value=ADOQuery1->Fields->Fields[4]->Value;
ADOQuery2->Parameters->ParamByName("naimen")->Value=ADOQuery1->Fields->Fields[5]->Value;
ADOQuery2->Parameters->ParamByName("srok")->Value=ADOQuery1->Fields->Fields[6]->Value;
ADOQuery2->Parameters->ParamByName("usl")->Value=ADOQuery1->Fields->Fields[7]->Value;


ADOQuery2->ExecSQL();
ADOQuery1->Next();
}

Теперь возникло 2 новых вопроса:
1)Мне нужно, чтобы в случае если поля уже заполнены, таже самая информация не вводилась, как это сделать?
2)Необходимо теперь распарсить строки, т.е. у меня в одной ячейке хранится 2 значения через отделенные в
1 случае пробелом
2 случае частицей от
3 случае дефисом
Нужно разбить эту ячейку на 2
 
В коде, неплохо бы, после внесения SQL выражения добавить строку:
Код:
ADOQuery2->Prepare();
А в конце:
Код:
ADOQuery2->Unprepare();
По поводу первого вопроса:
Вариант А
Установить уникальность значений полей в базе (Unicue). Тогда при попытке внесения строки с повторяющимися данными будешь получать исключительную ситуацию (Exception), который нужно будет обработать.
Вариант Б
Поискать перед внесением есть ли такие данные.
Что-то вроде:
Код:
ADOQuery2->IndexName="Название_орг";
ADOQuery2->SetKey();
ADOQuery2->FieldByName("Название_орг")->AsString="Значение которое ищем";
if (ADOQuery2->GoToKey())
{
Нашли
}
else
{
Не нашли
}

По второму вопросу:
Бери поле, анализируй, разделяй, перезаписывай первую половину в то же поле, а вторую ложи в новое.

Для анализа можно использовать метод AnsiString.Pos();
 
Для: LAW
Спасибо за ответы:
1)Только думаю теперь замена не нужна, лучше делать полную очистку таблицу от значений и импортировать новые, ведь документы для импорта могут быть разные, зачем мне хранить все значения - если они только временные....
2)А на стороне сервере с помощью курсоров распарсировку реализовать можно?Или лучше в клиенте делать?
 
Можите пример Распарсировки в МсСКЛ привести, например для такой строки
В таблице есть строка Сотрудники вида:
Директор Иванов Иван Иванович
Можно ли "легким движением руки" встваить ее в эту же таблицу, чтобы получилось следующее (т.е. несколько записей)

Должность Фамилия Имя Отчество
------------- ------------ --------- --------------
Директор Иванов Иван Иванович

пример в виде процедуры в МсСКЛ сервере если можно приведите.
Кроме этих данных в таблице хранится еще информация:
Название Сотрудники Адрес
Все требуют распарсировки, я создал еще одну пустую таблицу в которой хранятся все необходимые поля, куда нужно будет производить распарсировку, всех значений...причем этих значений достаточно много....ИД должен сохранятся...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD