Ich bin versucht, ein Makro zu erstellen, die in einigen Daten in Excel 2003 von SQL Server 2005.Excel VBA SQL Server-Daten importieren "type mismatch error"
Der SQL-Code ist in diesem Makro ziehen werden, und ein Teil Der Code dafür stammt von Werten in einer Zelle in Excel. Das funktioniert zu einem gewissen Grad, aber wenn die Daten in der Excel-Zelle, die ich für den SQL-Code verwende, eine Zeile in der Formelvorschau (oder ungefähr 170 Zeichen) überschreiten, erhalte ich den Fehler "Typ nicht übereinstimmen". Sonst funktioniert es richtig.
With ActiveSheet.QueryTables.Add(Connection:=Array(_
"OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=anglobisql;Use Procedure for Prepare=1;Auto " _
, _
"Translate=True;Packet Size=4096;Workstation ID=MyIDHere;Use Encryption for Data=False;Tag with column collation when possible=F" _
, "alse;Initial Catalog=DATABASENAME"), Destination:=Range("A1"))
.CommandType = xlCmdSql
.CommandText = Array("SELECT COLUMN1, COLUMN2 FROM TABLENAME (nolock) WHERE COLUMN1 IN (" & ActiveWorkbook.Sheets("Sheet1").Range("e607").Value & ")")
.Name = "DATABASE TABLENAME"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceConnectionFile = _
"H:\My Data Sources\DATABASE TABLENAME.odc"
.Refresh BackgroundQuery:=False
Offensichtlich sind alle Datenbanknamen und Tabellennamen korrekt ausgefüllt.
Jede Idee, warum dies unten fallen wird (ob eine Zeichenbegrenzung gibt es, oder ob es scheitert, weil der Zellenwert in der Formel Vorschauleiste in Excel auf der nächsten Zeile fortgesetzt? Wie dies behoben?
Viel könnte geschätzt,
Alex
32.767 Zeichen ist die Grenze für eine Excel-Zelle. Meine Vermutung ist, dass alle Ihre Daten in einer einzigen Zelle (A1) eingefügt werden. –
Nicht ganz sicher, ob Sie auf den Eingang oder den Ausgang beziehen. Für die Ausgabe: Wenn die SQL-Abfrage ordnungsgemäß funktioniert Daten in verschiedenen Zellen durch, so ist dies kein Problem Für die Eingabe: Der Cut-off scheint etwa 170 Zeichen, so wieder 32.767 kein Problem. – alexei7
Ich kann sehen, dass es eine Textlimit in der "Command Text" von "Edit OLE DB Query" in Excel, aber ich glaube, ich bin gut darin. – alexei7