PDA

View Full Version : مشکل با ADO



شفیعی
سه شنبه 26 اسفند 1382, 18:18 عصر
سلام
من یک برنامه نوشته ام که یک بانک اطلاعاتی از نوع DBF را باز می کند و اطلاعات فارسی تحت داس موجود در این بانک را به فارسی تحت ویندوز تبدیل می کند قبلا این برنامه را با TABLE نوشته بودم وهیچ مشکلی نداشت ولی از آن موقعی که از ADO استفاده کرده ام مشکل پیدا کرده است اطلاعات پس از تبدیل در بانک ذخیره نمی شود و پیغام زیر را می دهد



procedure TForm1.N1Click(Sender: TObject);
VAR S,F:STRING;
begin
IF ADOTABLE1.Active THEN
BEGIN
F:=DBGrid1.SelectedField.DisplayName;
ADOTABLE1.First ;
S:=F+' آیا فیلد '+'تبدیل شود ؟';
if MessageDlg(S,mtconfirmation,[mbyes,mbno],0)=mryes then
WHILE NOT ADOTable1.EOF DO
BEGIN
IF NOT VARISNULL(ADOTABLE1[F]) THEN
BEGIN
S:=ADOTABLE1[F];
if TRIM(s) <> '' THEN
BEGIN
ADOTABLE1.Edit;
ADOTABLE1[F]:=FDOS_FWIN(S);
ADOTABLE1.Post;
END;
END;
ADOTABLE1.Next;
END;
END;
end;

vcldeveloper
چهارشنبه 27 اسفند 1382, 02:02 صبح
من هم تو یه برنامه ای با همین پیغام مواجه شده بودم. پدرم رو در آورد.
اما مشکل من از داس به ویندوز نبود. بعد از یه خورده سر و کله زدن فهمیدم که اگر یه فیلد Auto Number به جدول اضافه کنم و اون فیلد رو به عنوان Key قرار بدم ...مشکل بر طرف می شه.
البته مشکل من در Access بود. نمی دونم این حرفا بدرت کار شما هم می خوره یا نه! :roll:

hr110
چهارشنبه 27 اسفند 1382, 07:52 صبح
ظاهراً که مشکلی نیست، ولی یک راه دیگه را هم برای پییمایش جداول استفاده کن و اینبار از for و ADOTABLE1.RecNo:=I استفاده کن ممکن است مشکل سر اولین رکورد باشد.

شفیعی
چهارشنبه 27 اسفند 1382, 22:56 عصر
سلام
خسته نباشید
دستور شما را انجام دادم ولی مشکل حل نشد

سار
پنج شنبه 28 اسفند 1382, 00:03 صبح
میشه دو مطلب رو مشخص کنید که :
1)روی چندومین خط میاستد(Error میده)
2)تا چند رکورد و به عبارت بهتر تا کجا و چندومین رکورد رو آپ دیت میکنه؟

شفیعی
پنج شنبه 28 اسفند 1382, 05:48 صبح
سلام
خسته نباشید
روی دستور زیر این پیغام را می دهد


ADOTABLE1.Post;

روی اولین رکورد این پیغام را می دهد

moradi_am
پنج شنبه 28 اسفند 1382, 07:04 صبح
آقای شفیعی سلام
آیا در داخل تابع FDOS_FWIN روی جدول کاری انجام نمیدهید (مثلا Edit ) ؟

شفیعی
پنج شنبه 28 اسفند 1382, 07:54 صبح
سلام


function fdos_fwin(FDW : STRING):STRING;
VAR FD:STRING;
T,T1:INTEGER;
SS:CHAR;
BEGIN
FD:=FDW;
FDW:='';
IF TRIM(FD) <> '' THEN
for t:=0 to length(FD) do
begin
ss:=FD[t];
T1:=Ord(SS);
case T1 of
1..127:
FDW:=FDW+SS;
128: FDW:=FDW+CHR(48);
129: FDW:=FDW+CHR(49);
130: FDW:=FDW+CHR(50);
131: FDW:=FDW+CHR(51);
132: FDW:=FDW+CHR(52);
133: FDW:=FDW+CHR(53);
134: FDW:=FDW+CHR(54);
135: FDW:=FDW+CHR(55);
136: FDW:=FDW+CHR(56);
137: FDW:=FDW+CHR(57);

138: FDW:=CHR(161)+FDW;
139: FDW:=CHR(220)+FDW;
140: FDW:=CHR(191)+FDW;
141: FDW:=CHR(194)+FDW;
142: FDW:=CHR(198)+FDW;
143: FDW:=CHR(193)+FDW;
144: FDW:=CHR(199)+FDW;
145: FDW:=CHR(199)+FDW;
146: FDW:=CHR(200)+CHR(157)+FDW;
147: FDW:=CHR(200)+FDW;
148: FDW:=CHR(129)+CHR(157)+FDW;
149: FDW:=CHR(129)+FDW;
150: FDW:=CHR(202)+CHR(157)+FDW;
151: FDW:=CHR(202)+FDW;
152: FDW:=CHR(203)+CHR(157)+FDW;
153: FDW:=CHR(203)+FDW;
154: FDW:=CHR(204)+CHR(157)+FDW;
155: FDW:=CHR(204)+FDW;
156: FDW:=CHR(141)+CHR(157)+FDW;
157: FDW:=CHR(141)+FDW;
158: FDW:=CHR(205)+CHR(157)+FDW;
159: FDW:=CHR(205)+FDW;
160: FDW:=CHR(206)+CHR(157)+FDW;
161: FDW:=CHR(206)+FDW;
162: FDW:=CHR(207)+FDW;
163: FDW:=CHR(208)+FDW;
164: FDW:=CHR(209)+FDW;
165: FDW:=CHR(210)+FDW;
166: FDW:=CHR(142)+FDW;
167: FDW:=CHR(211)+CHR(157)+FDW;
168: FDW:=CHR(211)+FDW;
169: FDW:=CHR(212)+CHR(157)+FDW;
170: FDW:=CHR(212)+FDW;
171: FDW:=CHR(213)+CHR(157)+FDW;
172: FDW:=CHR(213)+FDW;
173: FDW:=CHR(214)+CHR(157)+FDW;
174: FDW:=CHR(214)+FDW;
175: FDW:=CHR(216)+CHR(157)+FDW;
176..223 : FDW:=CHR(35)+FDW;
224: FDW:=CHR(217)+CHR(157)+FDW;
225: FDW:=CHR(218)+CHR(157)+FDW;
226: FDW:=CHR(218)+CHR(157)+FDW;
227: FDW:=CHR(218)+FDW;
228: FDW:=CHR(218)+FDW;
229: FDW:=CHR(219)+CHR(157)+FDW;
230: FDW:=CHR(219)+CHR(157)+FDW;
231: FDW:=CHR(219)+FDW;
232: FDW:=CHR(219)+FDW;
233: FDW:=CHR(221)+CHR(157)+FDW;
234: FDW:=CHR(221)+FDW;
235: FDW:=CHR(222)+CHR(157)+FDW;
236: FDW:=CHR(222)+FDW;
237: FDW:=CHR(223)+CHR(157)+FDW;
238: FDW:=CHR(223)+FDW;
239: FDW:=CHR(144)+CHR(157)+FDW;
240: FDW:=CHR(144)+FDW;
241: FDW:=CHR(225)+CHR(157)+FDW;
242: FDW:=CHR(225)+CHR(199)+FDW;
243: FDW:=CHR(225)+FDW;
244: FDW:=CHR(227)+CHR(157)+FDW;
245: FDW:=CHR(227)+FDW;
246: FDW:=CHR(228)+CHR(157)+FDW;
247: FDW:=CHR(228)+FDW;
248: FDW:=CHR(230)+FDW;
249: FDW:=CHR(229)+CHR(157)+FDW;
250: FDW:=CHR(229)+FDW;
251: FDW:=CHR(229)+FDW;
252: FDW:=CHR(237)+CHR(157)+FDW;
253: FDW:=CHR(237)+CHR(157)+FDW;
254: FDW:=CHR(237)+FDW;
255: FDW:=CHR(255)+FDW;
end;
end;
FDOS_FWIN:=FDW;
END;

شفیعی
جمعه 18 اردیبهشت 1383, 05:26 صبح
سلام
در تابع بالا یک مشکل است وقتی اعداد را تبدیل می کند اعداد معکوس می شوند مثلا اگر درفیلد بانک اطلاعاتی نوشته ایم 39-13 پس از تبدیل می شود 13-39

شفیعی
دوشنبه 28 اردیبهشت 1383, 04:47 صبح
سلام
پس تبدیل اطلاعات فارسی تحت داس به ویندوز . تصمیم گرفتم اطلاعات فارسی تحت ویندوز را به فونتهای IPT تبدیل کنم ولی کمی مشکل است چون برای این کار باید حروف قبل و بعد حرف مورد نظر رانیز چک نمود کسی از دوستان در این زمینه الگوریتم ویا طرحی برای راحتی کار ندارد