Программно руководящий Microsoft Access введенное Вложением поле с.NET

Похоже, что вы скопировали и вставили код из примера документации fullCalendar ( https://fullcalendar.io/docs/events-function ) почти построчно, не пытаясь его понять. В нем четко упоминается, что этот код предназначен для перевода данных из XML-ответа в формат объекта JS, требуемый fullCalendar. У вас нет такой проблемы, потому что ваш PHP уже возвращает JSON, который может быть проанализирован напрямую без преобразования.

Вы можете либо

a) немного изменить свой ajax-код, чтобы он просто возвращал данные непосредственно в fullCalendar:

success: function (doc) {
  callback(doc);
}

Или

b) заменить все это только с помощью URL, поскольку он уже соответствует спецификации fullCalendar, показанной в этом подходе: https://fullcalendar.io/docs/events-json-feed

events: "https://www.example.com/calender_api"

Когда вы сделаете это, fullCalendar позаботится о запуске запроса AJAX и обработке ответа для вас.

7
задан John Saunders 19 October 2011 в 19:08
поделиться

4 ответа

Interesting question. I don't use A2007, but have the runtime installed, so I used the Access object browser to see what's in there. I discovered something really odd -- there are two FIELD objects, Field and Field2. The attachment functions are members of Field2 but not Field. So, my suggestion would be that perhaps what you need to do is convert this:

Recordset.Fields("FileData").LoadFromFile(<filename>)

to something like this:

Dim rs As DAO.Recordset
Dim fld2 As DAO.Field2

Set rs = CurrentDb.OpenRecordset("[SQL]")
Set fld2 = Recordset.Fields("FileData")
fld2.LoadFromFile(<filename>)

rs.Close
Set fld2=Nothing

Now, I don't know if that will correct the problem for you, but it seems to me that given the two Field objects with different properties/methods/members, you need to be explicit about which Field object you're using. The code example you cite is specifically for use in Access and maybe Access does something to automatically resolve the differences between the two object (perhaps it uses the Field object by default for non-ACCDB databases and the Field2 object for ACCDB files).

1
ответ дан 7 December 2019 в 10:07
поделиться

Взгляните на эту запись в блоге команды Access В основном это то, что предлагает Дэвид, но с небольшим поворотом. Он устанавливает объект типа Recordset2, равный значению поля вложения. Затем добавляет запись к этому набору записей, а помещает содержимое файла в эту новую запись.

0
ответ дан 7 December 2019 в 10:07
поделиться

Я изо всех сил пытался сделать то же самое. Вы можете включить в свой проект ссылку на «Microsoft.Office.Interop.Access.Dao», которая предоставит вам интерфейсы Recordset2 и Field2, но не классы реализации.

Это примерно то, что я получил, Я отправлю еще один раз / если я это выясню ...

Мне не удалось заставить это работать на C #, поэтому я перешел к другому решению. Я хотел бы знать, как это сделать, если кто-нибудь это поймет.

0
ответ дан 7 December 2019 в 10:07
поделиться

Я наконец-то получил эту работу на C #, используя ссылку на Microsoft.Office.Interop.Access.Dao.

DBEngine dbe = new DBEngine();
Database db = dbe.OpenDatabase("C:\\SomeDatabase.accdb", false, false, "");
Recordset rs = db.OpenRecordset("SELECT * FROM TableWithAttachmentField", RecordsetTypeEnum.dbOpenDynaset, 0, LockTypeEnum.dbOptimistic);
rs.MoveFirst();
rs.Edit();
Recordset2 rs2 = (Recordset2)rs.Fields["AttachmentFieldName"].Value;
rs2.AddNew();

Field2 f2 = (Field2)rs2.Fields["FileData"];

f2.LoadFromFile("C:\\test.docx");
rs2._30_Update();
rs2.Close();

rs._30_Update();
rs.Close();

Это добавит test.docx в поле Attachment field "AttachmentFieldName" в таблице " TableWithAttachmentField ". Следует отметить, что попытка добавить один и тот же файл дважды приведет к ошибке.

5
ответ дан 7 December 2019 в 10:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: