Alimentați baza de date SQL cu Excel -

Din păcate, nu am mai lucrat niciodată cu un server SQL și, prin urmare, nu știu cum să îl abordez. Am încercat deja să găsesc ajutorul potrivit căutând, dar acesta este în mare parte prea fragmentat.

alimentați

Problemă:
Am o listă lungă Excel și trebuie să verific dacă înregistrările sunt deja în baza de date SQL și să le adaug dacă este necesar.

O înregistrare de date din DB constă din: [Data]; [Tip]; [Subtip]; [Valoare]

Numai dacă data, tipul și subtipul nu sunt disponibile în această constelație, valoarea din Excel poate fi transferată în baza de date SQL.

CERE:
- Cum pot contacta DB
- Cum verific dacă este disponibilă înregistrarea de date
- Cum adaug o înregistrare

Aș fi fericit dacă cineva mă poate ajuta.

- AW: Alimentați baza de date SQL cu Excel

Pentru a intra, aveți nevoie de o conexiune DB.
Pentru aceasta aveți nevoie de numele serverului, de utilizator și de parolă.
Dacă aveți acest lucru, puteți face o interogare pe tabel, despre date - sursă de date externe - server SQL.

Așadar, puteți încărca datele în cauză într-o foaie separată și le puteți analiza cu datele dvs. folosind formule de comparație pentru a determina abaterile sau cele lipsă și marcați în baza de date pe care doriți să le reîncărcați.

Pentru a schimba datele de pe DB trebuie să utilizați ADO (Active Data Objects). Puteți găsi o prezentare generală (cu exemple de cod) în Exemple de cod ADO în Visual Basic.
O altă variantă (și poate cea mai ușoară pentru un începător):
Scrieți înregistrările marcate (de adăugat) din tabelul dvs. într-un fișier CSV. Instrumente precum Dezvoltatorii SQL permit importarea fișierelor CSV în tabele noi sau existente ale unui DB. Dacă o faceți inteligent, s-ar putea să vă înțelegeți complet fără VBA, adică numai interogarea datelor, marcați cu formule, filtrați, exportați ca CSV și importați cu SQL Developer (anexați).

- AW: Alimentați baza de date SQL cu Excel

Aș descrie cunoștințele mele VBA ca fiind bune.
Problema este că aceste date ar trebui să fie actualizate zilnic prin Excel ulterior, deci trebuie implementate prin VBA.

Știu numele serverului, utilizatorul și parola și tabelul SQL a fost deja configurat în consecință.

Am făcut conexiunea DB, dar îmi pot imagina că trebuie să funcționeze fără integrare. În cele din urmă, baza de date va avea peste 200.000 de înregistrări de date și doar o parte din aceasta va fi recuperată prin intermediul pivotului pentru a nu rupe limitele Excel.

Lista Excel în sine va conține doar valorile care urmează să fie adăugate la baza de date. Recuperarea are loc apoi prin intermediul tabelului pivot EXCEL

- AW: Alimentați baza de date SQL cu Excel

Citat:
. dar nu găsesc cum să mă adresez bazei de date VBA.
Am postat un link pentru tine

- AW: Alimentați baza de date SQL cu Excel

Dar acum am problema că trebuie să verific dacă datele sunt deja disponibile înainte de a le salva. Prin falsuri am aflat că puteți face acest lucru cu o funcție de numărare.

Deci, ar trebui să se numere câte fișiere de date cu un anumit tip sunt deja disponibile, dacă numărul <> 0 atunci nu ar trebui să salveze datele.

Cred că codul de căutare ar trebui să fie astfel:

Cod:

strsql = "SELECT COUNT (*)" & _
„FROM table1” & _
„UNDE Desc =„ TEST ”” & _
„ȘI DATUM = 41204”

- AW: Alimentați baza de date SQL cu Excel

Nu pot să înțeleg de ce doriți să faceți acest număr în prealabil.
De ce nu vă extindeți INSERTUL cu o clauză WHERE care testează că sunt inserate numai înregistrări inexistente ?

- Re: AW: Alimentați baza de date SQL cu Excel

Nu pot să înțeleg de ce doriți să faceți acest număr în prealabil.
De ce nu vă extindeți INSERTUL cu o clauză WHERE care testează că sunt inserate numai înregistrări inexistente ?

Buna intrebare. Am crezut că trebuie să fac asta pentru a determina dacă setul de date există deja.

Setați oADOCmd = CreateObject ("ADODB.COMMAND")
Cu oADOCmd
.ActiveConnection = oADOConn
.CommandTimeout = 120
.CommandType = 1
.CommandText = "INSERT INTO table1" & _
„(DESC, Data, Identificator, Mediu)” & _
„VALORI („ DESC1 ”,„ 13 .01.2012 ”,„ C1 ”, 200,50)”
.Executați vAnswer
Se termina cu

Tocmai am aflat despre numărare jucându-mă.
Pentru a preveni salvarea datelor de două ori în baza de date, aș seta acum pur și simplu o declarație if în fața codului de mai sus.