Táplálja az SQL adatbázist az Excel segítségével -

Sajnos még soha nem dolgoztam SQL szerverrel, ezért nem tudom, hogyan közelítsem meg. Már kereséssel megpróbáltam megfelelő segítséget találni, de ez többnyire túl töredezett.

segítségével

Probléma:
Hosszú Excel listám van, és meg kell vizsgálnom, hogy a rekordok már szerepelnek-e az SQL adatbázisban, és szükség esetén hozzá kell adnom őket.

A DB egy adatrekordja a következőkből áll: [Dátum]; [Típus]; [SubTípus]; [Érték]

Csak akkor, ha a dátum, típus és altípus nem érhető el ebben a konstellációban, az Excelből származó érték átkerülhet az SQL DB-be.

KÉRDEZ:
- Hogyan vehetem fel a kapcsolatot a DB-vel
- Hogyan ellenőrizhetem, hogy rendelkezésre áll-e az adatrekord
- Hogyan adhatok hozzá rekordot

Örülnék, ha valaki tudna nekem segíteni.

- AW: Töltse fel az SQL adatbázist az Excel programmal

A bejutáshoz DB ​​kapcsolatra van szükség.
Ehhez szüksége van a szerver nevére, felhasználójára és jelszavára.
Ha ez megvan, megteheti a táblázatban az adatok - külső adatforrások - SQL szerverről szóló lekérdezést.

Ezzel betöltheti a kérdéses adatokat egy külön lapba, és összehasonlítási képletek segítségével elemezheti őket az adataival az eltérések vagy hiányzóak meghatározásához, és jelölje meg, melyiket szeretné újratölteni az adatbázisba.

A DB adatainak módosításához az ADO-t (Active Data Objects) kell használnia. Áttekintést (kódpéldákkal) a Visual Basic ADO kód példái alatt talál.
Egy másik változat (és talán a kezdő számára is könnyebb):
A táblából a megjelölt (hozzáadandó) rekordokat CSV fájlba írja. Az olyan eszközök, mint az SQL Developer, lehetővé teszik a CSV-fájlok importálását a DB új vagy meglévő tábláiba. Ha okosan csinálja, akkor lehet, hogy teljesen VBA nélkül is kijön, azaz csak adatkérdezés, jelölés képletekkel, szűrés, exportálás CSV-formátumban és importálás az SQL Developer segítségével (függelék).

- AW: Töltse fel az SQL adatbázist az Excel programmal

A VBA-tudásomat jónak írnám le.
A probléma az, hogy ezeket az adatokat naponta frissíteni kell az Excel segítségével, ezért a VBA-n keresztül kell végrehajtani.

Tudom a kiszolgáló nevét, felhasználót és jelszót, és az SQL táblázatot már ennek megfelelően beállítottuk.

Létrehoztam a DB kapcsolatot, de azt is el tudom képzelni, hogy integráció nélkül kell működnie. Végül az adatbázisnak több mint 200 000 adatrekordja lesz, és csak annak egy részét fogják lekérni a Pivot-on keresztül, hogy ne sértsék az Excel határait.

Magában az Excel listában csak azok az értékek lesznek, amelyeket fel kell venni az adatbázisba. A visszakeresés ezután az EXCEL pivot táblán keresztül történik

- AW: Töltse fel az SQL adatbázist az Excel programmal

Idézet:
. de nem találom a VBA adatbázis címzésének módját.
Tettem egy linket neked

- AW: Töltse fel az SQL adatbázist az Excel programmal

De most az a gondom van, hogy a mentés előtt meg kell vizsgálnom, hogy az adatok már rendelkezésre állnak-e. A goofing révén rájöttem, hogy ezt megteheti számlálási funkcióval.

Tehát meg kell számolni, hogy egy adott típussal hány adatfájl már elérhető, ha a szám <> 0, akkor nem szabad elmentenie az adatokat.

Szerintem a keresési kódnak ilyennek kell lennie:

Kód:

strsql = "COUNT kiválasztása (*)" & _
"FROM table1" & _
"WHERE Desc = 'TEST'" & _
"ÉS DATUM = 41204"

- AW: Töltse fel az SQL adatbázist az Excel programmal

Nem tudom megérteni, miért akarod ezt a számlálást elvégezni előzetesen.
Miért nem bővíti ki az INSERT-t egy WHERE záradékkal, amely azt teszteli, hogy csak nem létező rekordok kerülnek beillesztésre ?

- Re: AW: Táplálja az SQL adatbázist az Excel programmal

Nem értem, miért akarod ezt a számlálást elvégezni előzetesen.
Miért nem bővíti ki az INSERT-t egy WHERE záradékkal, amely azt teszteli, hogy csak nem létező rekordok kerülnek beillesztésre ?

Jó kérdés. Azt hittem, ezt meg kell tennem annak megállapításához, hogy az adatkészlet létezik-e már.

Állítsa be az oADOCmd = CreateObject elemet ("ADODB.COMMAND")
Az oADOCmd-vel
.ActiveConnection = oADOConn
.CommandTimeout = 120
.CommandType = 1
.CommandText = "INSERT INTO table1" & _
"(DESC, dátum, azonosító, átlag)" & _
"ÉRTÉKEK ('DESC1', '2012.01.13.,' C1 ', 200.50)"
.A vAnswer végrehajtása
Vége

Most jöttem rá, hogy számolok.
Annak megakadályozása érdekében, hogy az adatokat kétszer mentsük el az adatbázisban, most egyszerűen beállítanék egy if utasítást a fenti kód elé.