Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL - Statment 
:(
    Опции темы
nordlender2
Дата 2.8.2010, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



Привет всем вместе,

у меня следущая проблемка:

я должен с одной Excel таблицы воспроизвести  SQL - Statments и потом при их помощи новые поля заносить в базу данных. 
Я прям в Excel написал от руку один Insert. Всё работает, но это пока только одна строка, а может быть до 1000.  Не хотелось бы это как - то всё в ручную прописывать.

Есть ли какой способ это автоматизировать? 

Если да, то подскажите где и что я могу посмотреть.

Спасибо за ранее.


Исходная таблица:
Код

PLANTID   DIVISIONID   PARAMID   VVALUE     DEFINITION
 1         2         AdminRoleID   22      AdminRole


и  Insert  - Statment:
Код

="INSERT INTO KEZ_SYSTEMDEFAULT (PLANTID, DIVISIONID, PARAMID, VVALUE, DEFINITION) VALUES (" & $E$2 &"," & $F$2 &",'" & GLÄTTEN(GROSS(A5)) & "','" & GLÄTTEN(GROSS(B5)) & "','" & GLÄTTEN(GROSS(C5)) &"');"

PM MAIL   Вверх
mihanik
Дата 2.8.2010, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Сути вопроса не понял...


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
niteo
Дата 2.8.2010, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 23.11.2006
Где: Брянск

Репутация: нет
Всего: 1



В макрос загони, у тебя по идее и так макрос написан... 
Данные для запроса откуда браться будут? И как соединяешься с БД, через ODBC?
--------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй...
PM MAIL   Вверх
nordlender2
Дата 2.8.2010, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



@mihanik
суть вопроса в том что сейчас я одну эту строку написал вручную. а завтра мне дадут табличку не с одной позцией а с .. 1000.  и потом сидеть в все эти 1000 строк заносить вручную? 
поэтому и дамал что - нибудь такое , чтобы оно проверяло сколько строк и автоматом генерировало мне код. (sql)

@niteo
как в макрос загнать , никогда с этим не сталкивался. пример есть где-нибудь ? 
Даннеы мне будут уже готовые давать в Excel, соеденять мне не надо начего. задача сгенерировать sql. По возможности вывести в текст форме.

Добавлено через 14 минут и 32 секунды
@mihanik
может так немного понятнее. 
 имеется несколько записей. 

Код

PLANTID   DIVISIONID   PARAMID                 VVALUE     DEFINITION
   1           2      AdminRoleID              22            AdminRole
   1            2    DefaultDateTo             31.12.9999    дата окончания
   1            2    DefaultDivisionID         2             ID (Division)
   1            2    DefaultPlantID            1             ID (Plant)
   1            2    DefaultRoleID             1             Defaultrolle
   1            2    DimIdCarProject           9             DimID Carproject
   1            2    DimIdYear                 19            Id Dimension  year


PM MAIL   Вверх
niteo
Дата 2.8.2010, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 23.11.2006
Где: Брянск

Репутация: нет
Всего: 1



Что за БД и через что выполняете sql запрос?

--------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй...
PM MAIL   Вверх
mihanik
Дата 2.8.2010, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



nordlender2, 

Не пойму проблемы...
Ты используешь абсолютную адресацию?
Используешь! (Знаки доллара перед каждой координатой)
Используй относительную.
А потом "растяни" "формулу" на нужный диапозон.
Или я чего-то недопонял?



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
nordlender2
Дата 3.8.2010, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



наверное опишу задачу поподробнее, может тогда отпадут кое - какие вопросы.

я получаю от клиента таблицу в Excel. Они эти данные вытащили с SAP и передали мне. У меня нет доступа к этой системе SAP.

теперь мне надо эти данные занести в наш ДБ (Oracle), через специально спрограмированную для этого графическую оболочку. Там всё уже соедененно и подвязано. Надо только SQL - Statments туда внести и нажать на "выполнить" (Execute).  

А вот чтобы эти SQL - Statments туда внести , их надо сначало сделать.  Как я уже сверху описал, я тупо взял и в 6. ячейке написал от руки этот Insert.. С пару строками такое решение идёт, но скоро должны поступать таблицы с данымми  от 1000 до 3000 строк.  И всё это делать в ручную - это не реально. Вот я и хотел бы ужнать есть ли какой способ это как - то автоматизировать.  
PM MAIL   Вверх
niteo
Дата 3.8.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 23.11.2006
Где: Брянск

Репутация: нет
Всего: 1



Pl/SQL Developer:  Tools -> Text Importer
Можно в экселе сформировать с помощью макроса 1000 запросов. Потом загрузить и выплнить. Это не сложно, и очень быстро.
или в Экселе сделать такую конструкцию:
Выделить ячейку напротив значения которое надо добавить, Вписать вот такую конструкцию 
Код

="INSERT INTO KEZ_SYSTEMDEFAULT (PLANTID, DIVISIONID, PARAMID, VVALUE, DEFINITION) VALUES (" & E2 &"," & F2

И потом полученную ячейку, "растянуть" на весть солбик.
Кстати, о таком методе писал mihanik

Это сообщение отредактировал(а) niteo - 3.8.2010, 12:40
--------------------
Мне чужого лишнего не нада.Ешь ананасы, рябчиков жуй,день твой последний приходит, буржуй...
PM MAIL   Вверх
nordlender2
Дата 3.8.2010, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



я не работаю с SQL Developer. а только с Эксел.

Код

И потом полученную ячейку, "растянуть" на весть солбик.


я так сейчас и делаю. но идея была немного другая. 

вот примерно накатал, надо ешё до ума довести:

Код

Option Explicit

Const OUTPUT_FOLDER As String = "d:\temp\"

Const TABLE_NAME As String = "TEST"
Const TABLE_START As Integer = 4
Const PARAMID As String = "A"
Const VVALUE  As String = "B"
Const DEFINITION As String = "C"
Const PLANID As String = 1
Const DIVISIONID As Integer = 2

Sub insert()
    Dim lastEntry, i As Integer
    Dim sqlString, fileName As String
    
    ' имя файла
    fileName = "output_" & Date & "_" & Time & ".txt"
    fileName = Replace(fileName, ":", "-")
    fileName = OUTPUT_FOLDER & fileName
    
    ' новый файл для выдачи
    Open fileName For Output As #1
    
    ' последняя позиция в таблице
    lastEntry = Range("A65535").End(xlUp).Row
    
    For i = TABLE_START To lastEntry
 
        sqlString = "INSERT INTO " & TABLE_NAME & _
         "(" & _
          PLANID & ", " & _
          DIVISIONID & ", " & _
          toString(Range(PARAMID & i).value) & ", " & _
          toString(Range(VVALUE & i).value) & ", " & _
          toString(Range(DEFINITION & i).value) & _
         ")"
        
        Write #1, sqlString
    Next i
    
    Close #1
    
    MsgBox ("File in " & fileName)
Exit Sub
errorHandler:
    MsgBox ("error")
End Sub

Function toString(value As String) As String
    toString = "'" & value & "'"
End Function

PM MAIL   Вверх
nordlender2
Дата 3.8.2010, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



выдача на данный момент идёт в отдельный фаил,  дополнительно хотел бы ещё тоже самое в соседнем столбце выдать. т.е.:

Код


For ..
.
.

Sheets("Sheet1").Range("F4:F1000").value = sqlString 

next i
.


прописывает столбец, но только последними данными. т.е. в столбе Ф у меня стоит:


Код

INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' 
INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' 
INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' 
INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' 
INSERT INTO KEZ_SYSTEMDEFAULT_TEST('1', '2', 'DimIdYear', '19', 'Id Dimension  year' 
.
.


что-то не догоню где ошибка 

PM MAIL   Вверх
mihanik
Дата 6.8.2010, 05:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Цитата(nordlender2 @  3.8.2010,  18:27 Найти цитируемый пост)
Sheets("Sheet1").Range("F4:F1000").value = sqlString


Вот тут.
Ты выделяешь весь столбец и "говоришь": "А запиши ка сюда в каждую ячейку одно и то же значение значение sqlString"

Комп делает то, что ты сказал, а не то, что ты имел в виду...
 smile 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
nordlender2
Дата 6.8.2010, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



но я ведь его в For  - Statment занёс.  Почему в фаил едёт нормальная запись(прописывает все занчения) а тут нет? 

и ещё.  в файле стринг выдётся в ковычках. :  "это мой стринг"  - как убрать их? 
PM MAIL   Вверх
mihanik
Дата 6.8.2010, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Цитата(nordlender2 @  6.8.2010,  12:50 Найти цитируемый пост)
и ещё.  в файле стринг выдётся в ковычках. :  "это мой стринг"  - как убрать их?  


Не использовать свойство .value
Там что-то другое есть... formula или что-то типа етого...



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
dorogoyIV
Дата 6.8.2010, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 4
Всего: 46



Цитата(nordlender2 @  6.8.2010,  12:50 Найти цитируемый пост)
и ещё.  в файле стринг выдётся в ковычках. :  "это мой стринг"  - как убрать их? 

там не это используется?
Код

Function toString(value As String) As String
    toString = "'" & value & "'"
End Function

PM MAIL   Вверх
nordlender2
Дата 8.8.2010, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 2.8.2010

Репутация: нет
Всего: нет



Цитата
там не это используется?


это ковычки внутри стринга, и они не двойные. Проблема в наружных ковычках. Я уже пробовал и с ними и без, результат одинаковый. 

и совсем без value и как "mihanik" посоветовал с  formula и  formulalocale. всё равно ковычки не могу убрать.

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.