View Full Version : مبتدی: مشکل در ذخیره سازی دیتا
majid2230
دوشنبه 25 مرداد 1389, 05:22 صبح
با سلام
من یه فایل xml رو دانلود می کنم و بعد از جداسازی یه سری از نودهای خاص می خوام اونها را در یک بانک اطلاعاتی اکسس ذخیره کنم ولی سر یه نود خاص همیشه هنگام ذخیره سازی داده ها خطا می ده ، کد رو گذاشتم (2009) دوستان ببینید دلیل خطا را پیدا می کنید من که نفهمیدم .
ممنون
majid2230
دوشنبه 25 مرداد 1389, 17:14 عصر
مشکلش پیدا نشد یا نداره ؟
mofrad
یک شنبه 31 مرداد 1389, 01:07 صبح
مشکل کد شما اینه که داره جدول رو دوباره ایجاد میکنه ولی وجود داره!
این کد رو جایگزین کنید درست میشه (البته در زمان debug کار نمیکنه اونم به خاطر دستور except )
function CreateTable(TableName:string):boolean;
var
q: TAdoQuery;
command : string;
begin
q := TADOQuery.Create(nil);
q.Connection := Form1.ADOConnection1;
q.Close;
q.SQL.Clear;
try
command := 'Drop Table '+TableName;
q.SQL.Add(command);
q.Open;
except
end;
q.Close;
q.SQL.Clear;
command := 'Create Table '+TableName+' (ID COUNTER PRIMARY KEY , Title String , Feed_Text String , Link String , Add_Date String , isRead String );';
q.SQL.Add(command);
q.Prepared := True;
try
q.ExecSQL;
except
q.Free;
end;
end;
در ضمن در string مربوط به adoconnection رو هم این بذارید:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=DATA.mdb;Mode=Share Deny None;Extended Properties="";Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=True;Jet OLEDB:SFP=False
تا حجم بانک الکی بالا نره!
Felony
یک شنبه 31 مرداد 1389, 04:34 صبح
مشکل کد شما اینه که داره جدول رو دوباره ایجاد میکنه ولی وجود داره!
این کد رو جایگزین کنید درست میشه (البته در زمان debug کار نمیکنه اونم به خاطر دستور except )
function CreateTable(TableName:string):boolean;
var
q: TAdoQuery;
command : string;
begin
q := TADOQuery.Create(nil);
q.Connection := Form1.ADOConnection1;
q.Close;
q.SQL.Clear;
try
command := 'Drop Table '+TableName;
q.SQL.Add(command);
q.Open;
except
end;
q.Close;
q.SQL.Clear;
command := 'Create Table '+TableName+' (ID COUNTER PRIMARY KEY , Title String , Feed_Text String , Link String , Add_Date String , isRead String );';
q.SQL.Add(command);
q.Prepared := True;
try
q.ExecSQL;
except
q.Free;
end;
end;
در ضمن در string مربوط به adoconnection رو هم این بذارید:
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=DATA.mdb;Mode=Share Deny None;Extended Properties="";Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=True;Jet OLEDB:SFP=False
تا حجم بانک الکی بالا نره!
بلوک Try ... Except برای کنترل خطا در برنامه هست نه از زیر کار در رفتن ، نمیشه که به دلیل مشکل دار بودن کد یه Try ... Except اون وسط بندازید و هر خطایی رو به وسیله اون بیخیال شید ، خیلی راحت میتونید با if چک کنید و از به وجود اومدن خطا جلوگیری کنید و نزارید کار به اینجا بکشه !
mofrad
یک شنبه 31 مرداد 1389, 09:18 صبح
بلوک Try ... Except برای کنترل خطا در برنامه هست نه از زیر کار در رفتن ، نمیشه که به دلیل مشکل دار بودن کد یه Try ... Except اون وسط بندازید و هر خطایی رو به وسیله اون بیخیال شید ، خیلی راحت میتونید با if چک کنید و از به وجود اومدن خطا جلوگیری کنید و نزارید کار به اینجا بکشه !
بله البته! ولی چون جناب majid2230 خودشون از این استفاده کرده بودند دیگه من حالشو نداشتم تغییر بدم!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.