PDA

View Full Version : پردازش ثانویه رو حاصل select یک view



aliila
یک شنبه 20 خرداد 1386, 09:53 صبح
در برنامه بعد از زدن select رو یک view می خواهیم در حاصل یک پردازش انجام دهیم
مثلا در ستون سوم که از نوع رشته تحت داس است با یک تابع به رشته تحت ویندوز تبدیل کنیم
یعنی ستون سوم را ردیف به ردیف خوانده و مقدار جدید درج کنیم توجه کنید ستون سوم ویو یک ستون صریح در یک جدول نیست مثلا ترکیب سه ستون
نام + نام خانوادگی + آدرس
است
که این عملیات در هیچ کجا تاثیری نگذارد و فقط به کویک ریپورت جهت نمایش ارسال شود
اما فیلدهایی که صریح نیستند را قابل ویرایش نمی باشند چه کنم ؟

SYNDROME
یک شنبه 20 خرداد 1386, 15:16 عصر
با سلام
فکر کنم منظورت این است.
من یک Table با دوتا فیلد A , B ساختم


SELECT A , B
FROM Table1

حالا A و B را بها هم جمع می کنم و یک فیلد با نام C می سازم.


SELECT A + B as C
FROM Table1

حالا مقدار A و B را با هم جمع کرده وسه رقم سه رقم با تابع InsertCommaاز هم جدا می کنم و در C می ریزم.


SELECT InsertComma(A + B) AS c
FROM Table1

تابع InsertComma در SQLServer نوشته ام.
حالا به جای تابع InsertComma تابع ودت را قرار بده.

aliila
یک شنبه 20 خرداد 1386, 20:29 عصر
با تشکر شما منظور مرا متوجه نشدید من در برنامه دلفی بر اساس یک query یک ADOQuery1: را باز کرده ام




( ADOQuer1.sql.add(my_query
ADOQuer1.open


حال می خواهم
با یک حلقه for فیلد سوم ADOQuer1 را بایک مقدار عوض میکنم تا به quic report برای چاپ
بفرستم



for i:= 0 to ADOQuery1.fieldcount do
begin
ADOQuery1.edit ;
ADOQuery1.field[3]:=DosToWin(ADOQuery1.field[3]) ;

end


به اهمیت تابع DosToWinos در سطر آخر دقت کنید دقت کنید
شما تابع InsertComma در SQLServer نوشته اید ولی من DosToWinos را در دلفی نوشته ام

موقع اجرا erorr میدهد چون فیلد سوم فیلد ضمنی / مجازی / ... است

shayan_delphi
یک شنبه 20 خرداد 1386, 21:12 عصر
شما این کوئری را در AdoQuery بنویس

SELECT a, b ,(a+b )AS c FROM TABLE1
بعد با این کد تابع را روی فیلد سوم یا همان c اجرا کن

for i:= 0 to ADOQuery1.RecordCount -1 do
begin
ADOQuery1.edit ;
ADOQuery1.field[3]:=DosToWin(ADOQuery1.field[3]) ;
...
ADOQuery1.Next;
end

mzjahromi
یک شنبه 20 خرداد 1386, 21:53 عصر
میتونید برای این کار از CalculatedField استفاده کنید و به راحتی این کار را انجام دهید
برای این کار
1- روی AdoQuery دو بار کلیک کنید و همه فیلدها را به لیست اضافه کنید
2- یک فیلد Calculated هم اضافه کنید
3- در رویداد OnCalculated کد محاسبه خود رو بنویسید
نیازی به حلقه هم نیست خیلی هم مطمئن تر هست

SYNDROME
یک شنبه 20 خرداد 1386, 22:13 عصر
با سلام
در رویداد GetText مربوط به فیلد هم می توانی بنویسی.