Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Два вопроса!

471
14 февраля 2005 года
_MC_
178 / / 13.01.2005
Помогите люди добрые :)

1) Как засунуть в ресурсы БД MSAccess и соответственно как ее оттуда достать?

2) Как чарез ADO засунуть картинку в БД MSAccess и соответственно достать эту картинку!

Спасибо заранее!
259
14 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_
Помогите люди добрые :)

1) Как засунуть в ресурсы БД MSAccess и соответственно как ее оттуда достать?

2) Как чарез ADO засунуть картинку в БД MSAccess и соответственно достать эту картинку!

Спасибо заранее!


Опиши эти поля в таблице с типом OLE object. Из справки по Access:
OLE Object An object (such as a Microsoft Excel spreadsheet, a Microsoft Word document, graphics, sounds, or other binary data) linked to or embedded in a Microsoft Access table. Up to 1 gigabyte (limited by available disk space)

471
14 февраля 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by AlexandrVSmirno

Опиши эти поля в таблице с типом OLE object


У меня нет таблиц, только Query.

259
14 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_

У меня нет таблиц, только Query.


В бд Access, в таблицах такие поля должны быть типа OLE Object. Выбираешь их через select и обрабатываешь как OLE

471
14 февраля 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by AlexandrVSmirno

В бд Access, в таблицах такие поля должны быть типа OLE Object. Выбираешь их через select и обрабатываешь как OLE


Александр в Акчесе у меня есть поля ОЛЕ, а как обработать по-подробнее нельзя! Я только учусь :)

Этот код не работает, почему не подскажите?

 
Код:
TMemoryStream *ms = new TMemoryStream;
 ((TBlobField *)fMain->ADOQ->FieldByName("Image"))->SaveToStream(ms);
 iImage->Picture->Bitmap->LoadFromStream(ms);
259
14 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_

Александр в Акчесе у меня есть поля ОЛЕ, а как обработать по-подробнее нельзя! Я только учусь :)

Этот код не работает, почему не подскажите?
 
Код:
TMemoryStream *ms = new TMemoryStream;
 ((TBlobField *)fMain->ADOQ->FieldByName("Image"))->SaveToStream(ms);
 iImage->Picture->Bitmap->LoadFromStream(ms);


Попробуй вместо TImage TOleContainer

471
14 февраля 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by AlexandrVSmirno

Попробуй вместо TImage TOleContainer



Ничего не получается! Блин мне диплом сдавать уже, а у меня нифига не получается! :'(

А с первым вопросом как?

259
14 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_


Ничего не получается! Блин мне диплом сдавать уже, а у меня нифига не получается! :'(

А с первым вопросом как?


Ну так же в OLE и засовывать. Подожди я щас примерчик наваяю

471
14 февраля 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by AlexandrVSmirno

Ну так же в OLE и засовывать. Подожди я щас примерчик наваяю


Жду, весьма признателен за помощь!

259
14 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_

Жду, весьма признателен за помощь!


Прошу прощения за такую задержку, но как то это не просто получилось.
Значи так. С ADO у меня не получилось, зато получилось с BDE.
1. В ODBC завел system dsn с провайдером Microsoft Access driver (*.mdb)
2. В BDE администраторе создал БД c этим DSN
3. На форме рассположил DBImage,DBGrid и кнопку добавить.
4. DataSource1 назначил для DBGrid и DBImage
вот что получилось:

Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
   //это заполнение, высветка автоматом через DBImage
    OpenDialog1->Execute();
    if(Table1->FieldByName("images")->IsBlob(__classid(TField)))
    {
        Table1->Insert();
        TBlobField* im = (TBlobField*)Table1->FieldByName("images");
        im->LoadFromFile(OpenDialog1->FileName);
        Table1->Post();
    }
}

ЗЫ: Покоя не давал вопрос с ADO. Выяснил можно и через ADO, но обязательно через ODBC провайдера.
246
15 февраля 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by _MC_

Ничего не получается! Блин мне диплом сдавать уже, а у меня нифига не получается! :'(


F1->Index->ADOBlobStream Ok.

Код:
int S;

ADOTable1->Edit();
TADOBlobStream *BS = new TADOBlobStream(ADOTable1->Fields->Fields[1], bmWrite);
try
{
  S = Memo1->GetTextLen() + 1;
  char *P = new char;
  Memo1->GetTextBuf(P, S);
  BS->Write(P.c_str(), P.Length());
}
__finally
{
  delete BS;
}

Как картинку запихнуть догадаешься?

Цитата:
Originally posted by _MC_

А с первым вопросом как?


Вообщем не понял зачем "засовывать БД Access в ресурсы", ну ладно...
Засовывать как и любой др. файл.

 
Код:
//in rc
/*NAME  TYPE       FILE*/
  base  RCDATA     your.mdb
//in cpp
TResourceStream *rs = new
TResourceStream((int)HInstance,AnsiString("base"),RT_RCDATA);
   Midas->SaveToFile("your.mdb");
   delete rs ;
471
16 февраля 2005 года
_MC_
178 / / 13.01.2005
Цитата:
Originally posted by AlexandrVSmirno

Прошу прощения за такую задержку, но как то это не просто получилось.
Значи так. С ADO у меня не получилось, зато получилось с BDE.


Нет BDE не подходит никак, но все равно спасибо!

Цитата:
Originally posted by GIZMO

Как картинку запихнуть догадаешься?


Не догадаюсь, поможешь?

259
16 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by _MC_

Нет BDE не подходит никак, но все равно спасибо!


Не догадаюсь, поможешь?


Посмотри мой ЗЫ в предыдущем топике. Можно и через ADO. Но провайдер должен быть через ODBC.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог