Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.lang.visual-basic > #19931 > unrolled thread
| Started by | Marco75 <marcoporzi75@gmail.com> |
|---|---|
| First post | 2021-11-05 04:02 -0700 |
| Last post | 2021-11-05 06:12 -0700 |
| Articles | 2 — 1 participant |
Back to article view | Back to it.comp.lang.visual-basic
Dati tabella Excel su tabella SQL Server Marco75 <marcoporzi75@gmail.com> - 2021-11-05 04:02 -0700
Re: Dati tabella Excel su tabella SQL Server Marco75 <marcoporzi75@gmail.com> - 2021-11-05 06:12 -0700
| From | Marco75 <marcoporzi75@gmail.com> |
|---|---|
| Date | 2021-11-05 04:02 -0700 |
| Subject | Dati tabella Excel su tabella SQL Server |
| Message-ID | <30937b09-e13b-4d50-8b2c-aa5acbbd19d0n@googlegroups.com> |
Ciao,
devo popolare una tabella SQL Server a partire da Excel con VBA.
ho copiato un codice usato in un altro file che funziona benissimo ma in questo file non riesco a farlo funzionare!
Ho un errore in Update del recordset (Errore di sistema &H80040E2F (-2147217873).
questo il codice:
Dim R1 As String
R1 = MsgBox("Sto per inviare i dati al server..." & vbNewLine & vbNewLine & "Confermi?", vbQuestion + vbYesNo, "Salvataggio dati")
If R1 = vbYes Then
Dim conn As ADODB.Connection
Dim ServerName As String
Dim DbName As String
Dim TableName As String
Dim UserID As String
Dim Password As String
Dim RowCounter As Long
Dim ColCounter As Integer
Dim NoOfFields As Integer
Dim StartRow As Long
Dim EndRow As Long
Dim r As Long
Dim cs As String
Dim strSQL As String
Dim lRow As Long
lRow = Cells(Rows.Count, 1).End(xlUp).Row
NoOfFields = 16
StartRow = 2
EndRow = lRow
Set conn = New ADODB.Connection
cs = "DRIVER=SQL SERVER;"
cs = cs & "DATABASE=StoricoTare;"
cs = cs & "SERVER=AAA\SQLEXPRESS"
conn.Open cs, "User", "Password"
Dim rs As New ADODB.Recordset
Set rs = New ADODB.Recordset
strSQL = "Select * From T_StoricoTareTest;"
rs.Open strSQL, conn, adOpenDynamic, adLockOptimistic
'rs.Open TableName, cn, adOpenKeyset, adLockOptimistic, adCmdTable
r = 2
Do While Len(Range("A" & r).Formula) > 0
With rs
.AddNew
.Fields("DataOraInserimento") = Range("Q" & r).Value
.Fields("Anno") = Range("R" & r).Value
.Fields("Mese") =Range("S" & R).Value
.Fields("PianoIspezione") = Range("A" & r).Value
.Fields("MediaSG") = Range("D" & R).Value
.Fields("M") = Range("E" & R).Value
.Fields("Min") = Range("F" & R).Value
.Fields("Max") = Range("G" & R).Value
.Fields("DevSt") = Range("H" & R).Value
.Fields("3Sigma") = Range("I" & R).Value
.Fields("Scost+") = Range("J" & R).Value
.Fields("Scost-") = Range("K" & R).Value
.Fields("ATB+") = Range("L" & R).Value
.Fields("ATB-") = Range("M" & R).Value
.Fields("PercentATB_Sup_Inf") = Range("N" & R).Value
.Fields("MediaArrotondata") = Range("O" & R).Value
.Update
End With
r = r + 1
Loop
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
MsgBox ("I dati sono stati caricati sul server..."), vbInformation + vbOKOnly, "Salvataggio dati"
ElseIf R1 = vbNo Then
MsgBox ("Salvataggio dati annullato..."), vbInformation + vbOKOnly, "Salvataggio dati"
End If
[toc] | [next] | [standalone]
| From | Marco75 <marcoporzi75@gmail.com> |
|---|---|
| Date | 2021-11-05 06:12 -0700 |
| Message-ID | <8ffc2bee-29e6-4348-8d8c-37249c61325en@googlegroups.com> |
| In reply to | #19931 |
Il giorno venerdì 5 novembre 2021 alle 12:02:33 UTC+1 Marco75 ha scritto:
> Ciao,
> devo popolare una tabella SQL Server a partire da Excel con VBA.
> ho copiato un codice usato in un altro file che funziona benissimo ma in questo file non riesco a farlo funzionare!
> Ho un errore in Update del recordset (Errore di sistema &H80040E2F (-2147217873).
>
> questo il codice:
>
> Dim R1 As String
>
> R1 = MsgBox("Sto per inviare i dati al server..." & vbNewLine & vbNewLine & "Confermi?", vbQuestion + vbYesNo, "Salvataggio dati")
>
> If R1 = vbYes Then
>
> Dim conn As ADODB.Connection
> Dim ServerName As String
> Dim DbName As String
> Dim TableName As String
> Dim UserID As String
> Dim Password As String
> Dim RowCounter As Long
> Dim ColCounter As Integer
> Dim NoOfFields As Integer
> Dim StartRow As Long
> Dim EndRow As Long
> Dim r As Long
> Dim cs As String
> Dim strSQL As String
> Dim lRow As Long
>
> lRow = Cells(Rows.Count, 1).End(xlUp).Row
>
> NoOfFields = 16
> StartRow = 2
> EndRow = lRow
>
> Set conn = New ADODB.Connection
> cs = "DRIVER=SQL SERVER;"
> cs = cs & "DATABASE=StoricoTare;"
> cs = cs & "SERVER=AAA\SQLEXPRESS"
>
> conn.Open cs, "User", "Password"
>
> Dim rs As New ADODB.Recordset
> Set rs = New ADODB.Recordset
>
>
> strSQL = "Select * From T_StoricoTareTest;"
> rs.Open strSQL, conn, adOpenDynamic, adLockOptimistic
> 'rs.Open TableName, cn, adOpenKeyset, adLockOptimistic, adCmdTable
>
> r = 2
>
> Do While Len(Range("A" & r).Formula) > 0
>
> With rs
> .AddNew
> .Fields("DataOraInserimento") = Range("Q" & r).Value
> .Fields("Anno") = Range("R" & r).Value
> .Fields("Mese") =Range("S" & R).Value
> .Fields("PianoIspezione") = Range("A" & r).Value
> .Fields("MediaSG") = Range("D" & R).Value
> .Fields("M") = Range("E" & R).Value
> .Fields("Min") = Range("F" & R).Value
> .Fields("Max") = Range("G" & R).Value
> .Fields("DevSt") = Range("H" & R).Value
> .Fields("3Sigma") = Range("I" & R).Value
> .Fields("Scost+") = Range("J" & R).Value
> .Fields("Scost-") = Range("K" & R).Value
> .Fields("ATB+") = Range("L" & R).Value
> .Fields("ATB-") = Range("M" & R).Value
> .Fields("PercentATB_Sup_Inf") = Range("N" & R).Value
> .Fields("MediaArrotondata") = Range("O" & R).Value
> .Update
> End With
>
> r = r + 1
>
> Loop
> rs.Close
> Set rs = Nothing
> conn.Close
> Set conn = Nothing
>
> MsgBox ("I dati sono stati caricati sul server..."), vbInformation + vbOKOnly, "Salvataggio dati"
>
> ElseIf R1 = vbNo Then
> MsgBox ("Salvataggio dati annullato..."), vbInformation + vbOKOnly, "Salvataggio dati"
> End If
Scusate, ho risolto! in SQL server non mi aveva preso un'impostazione sulla colonna ID con contatore automatico, ora funziona
[toc] | [prev] | [standalone]
Back to top | Article view | it.comp.lang.visual-basic
csiph-web