View Full Version : سوال: درج تصویر در دیتا بیس و بازخوانی آن در فرم
ELI994
چهارشنبه 21 فروردین 1392, 11:59 صبح
نحوه ذخیره تصویر در دیتا بیس و بازخوانی تصویر دلخواه در فرم مورد نظر
هر کسی به سئوال بنده جواب دادن بیزحمت توضیح کامل و جامع بدن ممنون میشم
ELI994
چهارشنبه 21 فروردین 1392, 12:05 عصر
البته اینو بگم من از ADO Connection استفاده کردم
BORHAN TEC
پنج شنبه 22 فروردین 1392, 23:16 عصر
سلام
قبلاً نمونه کدی را در مورد ADO و پایگاه داده Access در همین قسمت قرار داده بودم که اگر جستجو کنید پیدا می کنید.
موفق باشید...
ELI994
شنبه 24 فروردین 1392, 11:50 صبح
اون چیزیه که شما گذاشتین تو دلفیه منی که دلفی بلد نیستم و نرم افزارش رو ندارم یکروز هم باید بشینم این کدها رو تطبیق بدم حالا نمیشه یه کمک درست و حسابی بکنین
نمونه کد توی بیلدر با دیتا بیس SQL بذارین
ممنون
BORHAN TEC
یک شنبه 25 فروردین 1392, 16:39 عصر
سلام
اگه بخوام به جای ماهی دادن، ماهی گیری رو یادتون بدم نرم افزار Delphi2CPP رو معرفی می کنم که برای تبدیل کدهای دلفی به C++ Builder میشه ازش استفاده کرد. :چشمک:
باور کنید این کار رو به خاطر خودتون می کنم. کسی که اول یه کمی سختی بکشه خیلی سریع پیشرفت می کنه.
در ضمن اگر چند ثانیه(!) جستجو می کردید می توانستید تاپیک زیر را پیدا کنید:
http://barnamenevis.org/showthread.php?131591
موفق باشید...
ELI994
دوشنبه 26 فروردین 1392, 07:09 صبح
سلام
من این تاپیک رو پیدا کرده بودم ولی به دلیل اینکه یکسری مشکلات و اروروها داشتم از شما کمک خواستم
در ضمن ماهی گیری بدون پایه اولیه نمیشه که درسته ؟
ELI994
دوشنبه 26 فروردین 1392, 08:04 صبح
ّرای ذخیره ابتدا یک تصویر در TImage قراردادم و سپس از کد زیر استفاده کردم
SendMessage(E1->Handle, WM_SETTEXT, 0, reinterpret_cast<LPARAM>("Hello World!"));
// Create TCanvas object for desktop DC.
TCanvas* dtCanvas = new TCanvas;
dtCanvas->Handle = GetDC(0);
// Create new TBitmap object and set its
// size to the size of the form.
Graphics::TBitmap*
bitmap = new Graphics::TBitmap;
bitmap->Width = Width;
bitmap->Height = Height;
// Create palette from form's Canvas; assign
// that palette to bitmap's Palette property.
int nColors =
GetDeviceCaps(Canvas->Handle, SIZEPALETTE);
LOGPALETTE* logPal = (LOGPALETTE*)new Byte[
sizeof(LOGPALETTE) + (nColors - 1) *
sizeof(PALETTEENTRY)];
logPal->palVersion = 0x300;
logPal->palNumEntries = (Word)nColors;
GetSystemPaletteEntries(Canvas->Handle,
0, nColors, logPal->palPalEntry);
bitmap->Palette = CreatePalette(logPal);
delete[] logPal;
// Copy section of screen from
// desktop canvas to the bitmap.
TRect src = BoundsRect;
TRect dest = Rect(0, 0, Width, Height);
bitmap->Canvas->CopyRect(dest, dtCanvas, src);
// Save it to disk.
bitmap->SaveToFile("form.bmp");
// Clean up and go home.
delete bitmap;
delete dtCanvas;
TFileStream * sImage;
TStream * sField;
sImage = new TFileStream("D:\\login.bmp", fmOpenRead);
Q1->Append();
__try
{
sField = Q1->CreateBlobStream(Q1->FieldByName("My_Field"), bmWrite);
sField->CopyFrom(sImage, sImage->Size);
//Q1->FieldByName("Id"), bmWrite;
Id->Text = IntToStr(sField) ;
Q1->SQL->Clear();
Q1->SQL->Add(" Select * from Picture where Id= '" + Id->Text + "'" );
Q1->Active = true;
if( Q1->RecordCount )
{
Q1->SQL->Clear();
Q1->SQL->Add( " Update Picture set sField = '" + sField->Image +"'" );
// Q1->SQL->Add( " , DateSabt = " + DateSabt->Text + " ,
Q1->SQL->Add( " Where Id = '" + Id->Text + "'");
//AND DateS = " + DateS->Text ) ;
Q1->ExecSQL();
}
else
{
Q1->SQL->Clear();
Q1->SQL->Add ( " Insert into Picture( Id, sField )" );
1 Q1->SQL->Add ( " values( '" + Id->Text + "', " + sField->Image + ")");
Q1->ExecSQL();
}
}
__finally
{
delete sField;
}
Q1->Post();
delete sImage;
در قسمت های درج و آپدیت sField->Image بهم ارور میده و نمیدونم چرا ؟
ELI994
دوشنبه 26 فروردین 1392, 08:20 صبح
میدونید مشکل اصلیه من چیه ؟
اینکه من این نرم افزار رو با سعی و خطا یاد گرفتم و خیلی چیزهاش رو بلد نیستم و چون c++ , delphi هم بلد نیستم خیلی از مشکلاتم رو نمی تونم برطرف کنم . اگه امکانش باشه یه کتابی البته برای سهولت یادگیری به فارسی به بنده پیشنهاد بدین تا بتونم بهتر با این محیط ارتباط برقرار کنم
ممنون از حسن توجه جنابعالی و بقیه دوستان
behzadboloori
شنبه 18 خرداد 1392, 14:00 عصر
فکر کنم این کد ساده تر باشه
void __fastcall TPhotoDataForm::LoadPhotoBtnClick(TObject *Sender)
{
if (OpenPictureDialog1->Execute())
{
int recCount;
ADOQueryPhoto->Close();
ADOQueryPhoto->SQL->Text="Select * from Photos where FirstPartyNo like '"+MaskEdit1->Text+"'";
ADOQueryPhoto->Open();
recCount=ADOQueryPhoto->RecordCount;
UnicodeString myFilename;
TFileStream * sImage;
TStream * sField;
for(int i=0;i<OpenPictureDialog1->Files->Count;i++){
myFilename =OpenPictureDialog1->Files->Strings[i];
//Image1->Picture->LoadFromFile(myFilename);
ADOQueryPhoto->Append();
ADOQueryPhoto->FieldByName("OrderID")->AsInteger=recCount+i;
//ADOQueryPhoto->FieldByName("Descriptions")->AsString=UnicodeString(OpenPictureDialog1->FileName);
sImage = new TFileStream(myFilename, fmOpenRead);
__try
{
sField = ADOQueryPhoto->CreateBlobStream(ADOQueryPhoto->FieldByName("picture"), bmWrite);
sField->CopyFrom(sImage, sImage->Size);
}
__finally
{
delete sField;
}
delete sImage;
myFilename=NullAsStringValue;
ADOQueryPhoto->FieldByName("FirstPartyNo")->AsString=MaskEdit1->Text;
ADOQueryPhoto->Post();
}
TGraphic * sGraphic;
//TStream * sField;
sField = ADOQueryPhoto->CreateBlobStream(ADOQueryPhoto->FieldByName("Picture"), bmRead);
sGraphic=new TJPEGImage;
sGraphic->LoadFromStream(sField);
Panel4->Height=float(Panel4->Width)/float(sGraphic->Width)*float(sGraphic->Height);
Image1->Picture->Graphic=sGraphic;
delete sGraphic;
}
}
البته این بخشی از یک کده که میتونین قسمتهای بدرد بخورش رو جدا کنین
omiditc
شنبه 18 خرداد 1392, 14:22 عصر
سلام.این فیلم شاید به دردتون بخوره.
فیلم آموزش فارسی ذخیره و بازیابی تصویر در SQL به زبان سی شارپ لینک (http://www.daneshjooyar.com/%D9%81%DB%8C%D9%84%D9%85-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-sql-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%DB%8C-%D8%B4/)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.