PDA

View Full Version : مشكل این كد چیست



aabedi25
سه شنبه 26 شهریور 1387, 14:12 عصر
var

c: Currency ;
begin
with qryTrans do begin
DisableControls;
c:= 0 ;
while not eof do begin
C:=C + fieldbyname('Balance').AsCurrency;
edit ;
fieldbyname('calcuBalance').AsCurrency := C ;
post ;
Next;
end;//while
First;
EnableControls;
end;//with
من در دلفي از اول تا آخر يك Query يك ستون را ويرايش مي كنم
زماني كه برنامه به بانكي كه روي SQL 2000 است وصل مي‌شود درست كار ميكند ولي همان برنامه با هيچ تغيير وقتي به بانكي كه روي SQL 2005 است وصل مي‌شود درست كار نمي كند
چون اين تغييرات نمايشي مي باشد در DataBase هم نمي خواهم ذخيره شود به همين دليل Query را از نوع ltBatchOptimistic انتخاب كرده ام

Hsimple11
سه شنبه 26 شهریور 1387, 15:46 عصر
عنوان تاپیک خود را اصلاح کنید.

vcldeveloper
سه شنبه 26 شهریور 1387, 19:07 عصر
درست کار نمی کند یعنی چی؟ چه اتفاقی میافته؟

SYNDROME
سه شنبه 26 شهریور 1387, 20:23 عصر
در ادامه صحبت های دوستان
آیا از View استفاده می کنید؟
شاید هم SQL 2005 اشکال داشته باشد. آیا ورژنهای دیگر را هم نصب کرده اید؟
من چنین مشکلی را در sQL دیدم که به خاطر اشکال در یکی از ورژنهای SQL بود.
موفق باشید

aabedi25
چهارشنبه 27 شهریور 1387, 09:33 صبح
درست کار نمی کند یعنی چی؟ چه اتفاقی میافته؟
يعني اينكه مقادير Query كه ويراش شده اند بعد از رد شدن از ركورد باقي نمي ماند مي خواهم مانده را از اول تا آخر حساب كنم
در 2000 درست است ولي در 2005 درست نمي شود

aabedi25
چهارشنبه 27 شهریور 1387, 09:38 صبح
در ادامه صحبت های دوستان
آیا از View استفاده می کنید؟
شاید هم SQL 2005 اشکال داشته باشد. آیا ورژنهای دیگر را هم نصب کرده اید؟
من چنین مشکلی را در sQL دیدم که به خاطر اشکال در یکی از ورژنهای SQL بود.
موفق باشید

View نيست ولي SELECT تو در تو است يعني select * From(......) abc

Loveski
چهارشنبه 27 شهریور 1387, 10:12 صبح
ما که علم غیب نداریم که .
یا پیغام خطا را بنویس یا کد SQl را .

aabedi25
چهارشنبه 27 شهریور 1387, 10:23 صبح
ما که علم غیب نداریم که .
یا پیغام خطا را بنویس یا کد SQl را .
دوست عزيز هيچ پيغام خطايي وجود ندارد
و كد SQL هم هيچ مشكلي ندارد
از توجه شما هم متشكرم:گریه:

Touska
چهارشنبه 27 شهریور 1387, 10:53 صبح
شما در حقیقت می خواهید بگید که این برنامه ایی که نوشته اید در Sql 2000 بدون مشکل کار میکنه

ولی در Sql 2005 بدون هیچ کونه Bug ی عمل نمی کنه :

خوب کدتون و دستورات Sql رو اینجا بذارید تا ما هم تست کنیم ، ببینیم مشکل از چی هست.

موفق باشید :)

aabedi25
چهارشنبه 27 شهریور 1387, 11:18 صبح
شما در حقیقت می خواهید بگید که این برنامه ایی که نوشته اید در Sql 2000 بدون مشکل کار میکنه

ولی در Sql 2005 بدون هیچ کونه Bug ی عمل نمی کنه :

خوب کدتون و دستورات Sql رو اینجا بذارید تا ما هم تست کنیم ، ببینیم مشکل از چی هست.

موفق باشید :)
اين كد SQL كه در يك TADOQuery قرار دارد


SELECT CofferTrasaction.*, bed - bes AS balance, bes AS calcuBalance
FROM CofferTrasaction

و كد دلفي را هم كه در اول تاپيك مي توانيد مشاهده كنيد
با تشكر از وقتي كه شما و دوستان گذاشتيد.

Touska
چهارشنبه 27 شهریور 1387, 11:45 صبح
خوب اگر Error ی پیزی نمی ده ، خوب مشکل شاید از جای دیگه باشه ، روش کار درسته

یک روش دیگه هم اینکه از یک Sp در SQl استفاده نمایید که کدشو اینجا می ذارم :


DECLARE MyCur CURSOR
FOR
SELECT bed - bes AS balance
FROM CofferTrasaction

OPEN MyCur

DECLARE @C money
DECLARE @total money

SET @total = 0

FETCH NEXT FROM MyCur INTO @C
WHILE (@@FETCH_STATUS <> -1) AND (@@FETCH_STATUS <> -2)
BEGIN
SET @total = @total + @C
UPDATE CofferTrasaction SET calcuBalance = @total
FETCH NEXT FROM MyCur INTO @C
END

CLOSE Mycur
DEALLOCATE MyCur

aabedi25
چهارشنبه 27 شهریور 1387, 11:59 صبح
خوب اگر Error ی پیزی نمی ده ، خوب مشکل شاید از جای دیگه باشه ، روش کار درسته

یک روش دیگه هم اینکه از یک Sp در SQl استفاده نمایید که کدشو اینجا می ذارم :


DECLARE MyCur CURSOR
FOR
SELECT bed - bes AS balance
FROM CofferTrasaction

OPEN MyCur

DECLARE @C money
DECLARE @total money

SET @total = 0

FETCH NEXT FROM MyCur INTO @C
WHILE (@@FETCH_STATUS <> -1) AND (@@FETCH_STATUS <> -2)
BEGIN
SET @total = @total + @C
UPDATE CofferTrasaction SET calcuBalance = @total
FETCH NEXT FROM MyCur INTO @C
END

CLOSE Mycur
DEALLOCATE MyCur
از راه حل شما متشكرم
ولي من مي خواهم در دلفي اين مشكل را حل كنم مثلا اگر از TClientDataSet استفاده كنم حل مي شود ولي نمي خواهم اين كار را بكنم
تفاوت 2000 و 2005 خيلي برايم جاي سئوال است.

Touska
چهارشنبه 27 شهریور 1387, 12:27 عصر
من دیگه چیزی به ذهنم نمی رسه آخه ، شاید مشکل از جای دیگه باشه.

SQl 2000 و SQl 2005 با هم تا حدی متفاوت هستند نه دیگه تو اساس و پایه.

موفق باشید :)