2015-07-02 3 views
1

Я пытаюсь передать текст из Excel 2010 в Access 2010. Из-за ограничения на 256 символов для обычного текста я хочу использовать памятку. Теперь, после нескольких часов поиска, у меня все еще нет решения моей проблемы.Перенос памятки из Excel 2010 в Access 2010 с помощью VBA и DAO

Конкретно: Этот код считывает данные (в этом случае текст) и записывает их в базу данных Access. Из-за ограничения на текст мне нужно использовать поля Memo в базе данных Access, но после настройки всего, что не удалось найти тип данных для этого оператора (sSQL).

То, что я хочу сделать, это изменить следующий код: (немного уменьшена до соответствующих битов)

Dim ws As DAO.Workspace 
Dim db As DAO.Database 
Dim sDb As String 
Dim sSQL As String 
Dim qdf As QueryDef 

sDb = ActiveWorkbook.Path & "\DataBase.accdb" 

Set ws = DBEngine.Workspaces(0) 
Set db = ws.OpenDatabase(sDb) 

sSQL = "Parameters" _ 
& " SomeText Text; " _      <<== Here << == 
& "INSERT INTO IT_Ticker (SomeText)" _ 
& " Values ([ SomeText ])" 

Set qdf = db.CreateQueryDef("", sSQL) 

qdf.Parameters!SomeText = Worksheets("SomeSheet").Range("A1") 

qdf.Execute dbFailOnError 
Debug.Print qdf.RecordsAffected 

qdf.Close 
db.Close 
ws.Close 

Set qdf = Nothing 
Set db = Nothing 
Set ws = Nothing 

Я думал о замене «Текст» с «Memo», но он не работает. Я также пробовал «LongText» и «String».

+0

Не знаете, что вы имели в виду, но «переместите текст». Вы хотите, чтобы лист Excel был помещен в Access как таблица? – Dportology

ответ

0

Я предполагаю, что таблица, в которую вы добавляете данные IT_Ticker, уже существует. Вы не были конкретно связаны с используемым вами Parameters, но приведенный ниже код работает отлично.

Option Explicit 

Sub test() 
    Dim ws As DAO.Workspace 
    Dim db As DAO.Database 
    Dim sDb As String 
    Dim sSQL As String 
    Dim qdf As QueryDef 
    Dim userName As String 
    Dim longText As String 

    sDb = ActiveWorkbook.Path & "\DataBase2.accdb" 

    Set ws = DBEngine.Workspaces(0) 
    Set db = ws.OpenDatabase(sDb) 

    'sSQL = "Parameters" _ 
    '& " SomeText Text; " _      <<== Here << == 
    '& "INSERT INTO IT_Ticker (SomeText)" _ 
    '& " Values ([ SomeText ])" 

    userName = Cells(2, 2).Value 
    longText = Cells(3, 2).Value 

    sSQL = "INSERT INTO IT_Ticker (UserName, ReallyLongText) Values (""" & _ 
      userName & """,""" & longText & """)" 

    Set qdf = db.CreateQueryDef("", sSQL) 

    'qdf.Parameters!SomeText = Worksheets("SomeSheet").Range("A1") 

    qdf.Execute dbFailOnError 
    Debug.Print qdf.RecordsAffected 

    qdf.Close 
    db.Close 
    ws.Close 

    Set qdf = Nothing 
    Set db = Nothing 
    Set ws = Nothing 
End Sub 
Смежные вопросы