Хранете SQL базата данни с Excel -

За съжаление никога преди не съм работил със SQL Server и следователно не знам как да го подхождам. Вече се опитах да намеря подходящата помощ чрез търсенето, но това е предимно твърде фрагментирано.

данни

Проблем:
Имам дълъг списък на Excel и трябва да проверя дали записите вече са в базата данни на SQL и да ги добавя, ако е необходимо.

Записът на данни в DB се състои от: [Дата]; [Тип]; [Подтип]; [Стойност]

Само ако датата, типът и подтипът не са налични в това съзвездие, стойността от Excel може да бъде прехвърлена в SQL DB.

ПИТАМ:
- Как да се свържа с DB
- Как да проверя дали записът с данни е наличен
- Как да добавя запис

Ще се радвам, ако някой може да ми помогне.

- AW: Направете SQL базата данни с Excel

За да влезете, ви трябва DB връзка.
За това са ви необходими име на сървър, потребител и парола.
Ако имате, че можете да направите заявка в таблицата, относно данни - външен източник на данни - SQL сървър.

С това можете да заредите въпросните данни в отделен лист и да ги анализирате с вашите данни, използвайки формули за сравнение, за да определите отклонения или липсващи и да отбележите в базата данни кои искате да презаредите.

За да промените данните в DB, ​​трябва да използвате ADO (Active Data Objects). Можете да намерите преглед (с примери за кодове) в Примери за кодове ADO в Visual Basic.
Друг вариант (и може би по-лесният за начинаещ):
Записвате маркираните (за добавяне) записи от вашата таблица в CSV файл. Инструменти като Разработчиците на SQL позволяват импортиране на CSV файлове в нови или съществуващи таблици на DB. Ако го направите хитро, може да се разберете напълно без VBA, т.е. само заявка за данни, маркиране с формули, филтриране, експортиране като CSV и импортиране с SQL Developer (добавяне).

- AW: Направете SQL базата данни с Excel

Бих описал познанията си за VBA като добри.
Проблемът е, че тези данни трябва да се актуализират ежедневно чрез Excel по-късно, така че те трябва да бъдат внедрени чрез VBA.

Знам име на сървъра, потребител и парола и SQL таблицата вече е настроена съответно.

Направих DB връзката, но също така мога да си представя, че тя трябва да работи без интеграцията. В крайна сметка DB ще има над 200 000 записа на данни и само част ще бъде извлечена чрез pivot, за да не се нарушават границите на Excel.

Самият списък на Excel ще съдържа само стойностите, които трябва да бъдат добавени към базата данни. След това извличането става чрез въртящата таблица EXCEL

- AW: Направете SQL базата данни с Excel

Цитат:
. но не мога да намеря как да се обърна към базата данни VBA.
Публикувах линк за теб

- AW: Направете SQL базата данни с Excel

Но сега имам проблема, че трябва да проверя дали данните вече са налични, преди да запазя. Чрез глупиране разбрах, че можете да направите това с функция за броене.

Така че трябва да се брои колко файлове с данни с определен тип вече са налични, ако числото <> 0, то не трябва да записва данните.

Мисля, че кодът за търсене трябва да бъде такъв:

Код:

strsql = "ИЗБЕРЕТЕ БРОЙ (*)" & _
"ОТ таблица1" & _
"WHERE Desc = 'TEST'" & _
"И ДАТУМА = 41204"

- AW: Направете SQL базата данни с Excel

Не мога да разбера защо искате да направите това броене предварително.
Защо не разширите INSERT с клауза WHERE, която тества, че се вмъкват само несъществуващи записи ?

- Re: AW: Хранете базата данни на SQL с Excel

Не мога да разбера защо искате да направите това броене предварително.
Защо не разширите INSERT с клауза WHERE, която тества, че се вмъкват само несъществуващи записи ?

Добър въпрос. Мислех, че трябва да направя това, за да определя дали набор от данни вече съществува.

Задайте oADOCmd = CreateObject ("ADODB.COMMAND")
С oADOCmd
.ActiveConnection = oADOConn
.CommandTimeout = 120
.CommandType = 1
.CommandText = "INSERT INTO table1" & _
"(DESC, дата, идентификатор, средно)" & _
"СТОЙНОСТИ ('DESC1', '13 .01.2012 ',' C1 ', 200.50)"
.Изпълнете vAnswer
Край с

Току-що разбрах за броенето, като си поиграх.
За да предотвратя записването на данните два пъти в базата данни, сега просто щях да задам оператор if пред горния код.