Arka planda kitlenmeden çalışacak uygulama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Arka planda kitlenmeden çalışacak uygulama
Mrb herkese.
Yaptığım uygulamada şirket içindeki bilgilerin aktarılmasını sağlayacak arka planda çalışan antivirüsler gibi aktif, kitlenmeyecek ve sistemi çok zorlamayacak uygulama hazırlamam gerekiyor. Bu konuda yardımcı olabilecek veya hangi bilgileri araştırmam gerektiğini söyleyebilecek arkadaşlar olursa çok sevinirim
Yaptığım uygulamada şirket içindeki bilgilerin aktarılmasını sağlayacak arka planda çalışan antivirüsler gibi aktif, kitlenmeyecek ve sistemi çok zorlamayacak uygulama hazırlamam gerekiyor. Bu konuda yardımcı olabilecek veya hangi bilgileri araştırmam gerektiğini söyleyebilecek arkadaşlar olursa çok sevinirim
Re: Arka planda kitlenmeden çalışacak uygulama
önemli olan hangi bilgileri nerden çekip nereye aktaracak. antivirüse takılması için localden alıp internete veri taşıyan bir proje yada sürekli registera müdehalede bulunan proje vs. bunlar antivirüse takılır. kilitlenmeyen demişsin ya tam o noktada bana yanık olmayan yemek lazım gibi bir şey olmuş. programın kilitlenip kilitlenmemesi senin kod yapına network ile haberleşmene vs. bakar. o yüzden ucu her yere çıkabilen bir soru sormuşsun. bence sen önce kendine cevap vermelisin ne yapmak istiyorsun. local mi yoksa dışa açık bir yazılım mı olacak vs. bunları netleştirip sorunu bence tekrar güncellemen gerekebilir. kolay gelsin.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Re: Arka planda kitlenmeden çalışacak uygulama
localden alıp nete bilgi gönderecek. bilgileri gönderirken uygulama ekranında giden bilgiler görünecek (Thread). Antivirüse takılması olayı değil. Antivirüs arka planda ararken veya antivirüs açık olarak dosyaları ararken nasıl kilitlenmiyorsa ve yüzdelik ve dosya bilgilerini gösteririyor ise aynı şekilde.
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Re: Arka planda kitlenmeden çalışacak uygulama
Service application inceliyorum nette güzel bir video buldum http://www.youtube.com/watch?v=w3od-QJwbC8 görüntü kalitesi düşük olduğundan birşey anlaşılmıyor.
Re: Arka planda kitlenmeden çalışacak uygulama
"uygulama ekranında giden bilgiler görünecek (Thread)."
Servis uygulamasında bunu yapamazsın, servis uygulaması, kullanıcı arayüzü olmayan, sadece iş yapan uygulama diye özetliyebilirsin. Bu yüzden "Ekranda" bir şey gösteremezsin. Servis uygulamasının esas amacı, kullancı login olmadan işlem yapabilmektir.
cümlede Thread i de yanlış anlamda kullanmışsın, thread in amacı, aynı anda işlem yapılıyor izlenimini vermektir, basitçe, aynı uygulama içinde farklı uygulamalar çalışması denebilir.
Senin yazdığından anladığım, x yere gönderilen her bilgide ekrandaki grid e bir kayıt eklemek için thread e gerek yok.
Bu bahsettiğin iş özel bir şey değil, bir uygulama yazacaksın, sadece uygulama minimize edildiğinde taskbar da kaybolup, trayicon olarak görünecek, bununla ilgili net te ve forumda onlarca kod ve component mevcut.
Kolay gele
Servis uygulamasında bunu yapamazsın, servis uygulaması, kullanıcı arayüzü olmayan, sadece iş yapan uygulama diye özetliyebilirsin. Bu yüzden "Ekranda" bir şey gösteremezsin. Servis uygulamasının esas amacı, kullancı login olmadan işlem yapabilmektir.
cümlede Thread i de yanlış anlamda kullanmışsın, thread in amacı, aynı anda işlem yapılıyor izlenimini vermektir, basitçe, aynı uygulama içinde farklı uygulamalar çalışması denebilir.
Senin yazdığından anladığım, x yere gönderilen her bilgide ekrandaki grid e bir kayıt eklemek için thread e gerek yok.
Bu bahsettiğin iş özel bir şey değil, bir uygulama yazacaksın, sadece uygulama minimize edildiğinde taskbar da kaybolup, trayicon olarak görünecek, bununla ilgili net te ve forumda onlarca kod ve component mevcut.
Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Re: Arka planda kitlenmeden çalışacak uygulama
arda arda 500 veya daha fazlasını kayıt aktarırken ekran donuyor bunu nasıl engelleyebilirim.
- greenegitim
- Üye
- Mesajlar: 713
- Kayıt: 28 Nis 2011 10:33
- Konum: İstanbul
Re: Arka planda kitlenmeden çalışacak uygulama
Kendi yaptığım projelerde Application.ProcessMessages; kullanıyorumpasa_yasar yazdı:arda arda 500 veya daha fazlasını kayıt aktarırken ekran donuyor bunu nasıl engelleyebilirim.
Mücadele güzelleştirir!
Re: Arka planda kitlenmeden çalışacak uygulama
greenegitim yazdı:Kendi yaptığım projelerde Application.ProcessMessages; kullanıyorumpasa_yasar yazdı:arda arda 500 veya daha fazlasını kayıt aktarırken ekran donuyor bunu nasıl engelleyebilirim.
arkadasın soylediği gibi veri gönderme prosedur veya fonksiyonu içerisine veya fonksiyonu çalıştırdığınız yerin hemen altına
Kod: Tümünü seç
application.processmessages;
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Re: Arka planda kitlenmeden çalışacak uygulama
Onu denedim işe yaramıyor bir süre çalışıyor sonra işlem bitene kadar ekran donuyor. Microsoft veya antivirüs uygulamalarında binlerce dosyayı tarıyor ama ekranda kilitlenmeden düzgün bir şekilde grafik ve isim olarak çalışıyor.
Re: Arka planda kitlenmeden çalışacak uygulama
Kod: Tümünü seç
application.processmessages;
Kod: Tümünü seç
application.processmessages;
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Re: Arka planda kitlenmeden çalışacak uygulama
while do döngüsünde AdoQuery next yaptıktan sonra kullanıyorum her okuyan kaydı ekrana yazıyorum
Re: Arka planda kitlenmeden çalışacak uygulama
kod bloğunu paylaşmanız mümkünse birlikte bakabiliriz dilerseniz.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
- pasa_yasar
- Üye
- Mesajlar: 570
- Kayıt: 07 Haz 2004 12:35
Re: Arka planda kitlenmeden çalışacak uygulama
Stokların Excelden Aktarılması ile ilgili kod bloğu
Kod: Tümünü seç
Application.ProcessMessages;
AdoQuery1.DisableControls;
UniQuery2.Close;
UniQuery2.Open;
UniQuery8.Close;
UniQuery8.SQL.Clear;
UniQuery8.SQL.Add('select * from sales');
UniQuery8.Open;
satir:=0;
ADOQuery1.First;
while not ADOQuery1.eof do
begin
satir:=satir+1;
cxLabel7.caption:='( '+inttostr(satir)+' / '+inttostr(ADOQuery1.RecordCount)+' )'+#13+Trim(AdoQuery1.FieldByName(cxComboBox1.Text).AsString)+#13+Trim(AdoQuery1.FieldByName(cxComboBox2.Text).AsString);
cxLabel7.Update;
UniQuery2.Append;
UniQuery700.close;
UniQuery700.sql.clear;
UniQuery700.sql.add('select * from proautoid');
UniQuery700.open;
UniQuery700.Append;
UniQuery700.Post;
UniQuery2.fieldbyname('ID').AsInteger:=UniQuery700.fieldbyname('ID').AsInteger;
if Trim(cxComboBox1.Text)<>'Seçim Yok' then
begin
UniQuery2.FieldByName('code').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox1.Text).AsString);
end;
if Trim(cxComboBox2.Text)<>'Seçim Yok' then
begin
UniQuery2.FieldByName('stockname').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox2.Text).AsString);
end;
if Trim(cxComboBox3.Text)<>'Seçim Yok' then
begin
UniQuery2.FieldByName('barkod1').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox3.Text).AsString);
end;
if Trim(cxComboBox15.Text)<>'Seçim Yok' then
begin
if (Trim(AdoQuery1.FieldByName(cxComboBox15.Text).AsString)='Ürün')
or (Trim(AdoQuery1.FieldByName(cxComboBox15.Text).AsString)='Hizmet') then
begin
UniQuery2.FieldByName('turu').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox15.Text).AsString);
end
else
begin
UniQuery2.FieldByName('turu').AsString:='Ürün';
end;
end
else
begin
UniQuery2.FieldByName('turu').AsString:='Ürün';
end;
if Trim(cxComboBox4.Text)<>'Seçim Yok' then
begin
if Trim(AdoQuery1.FieldByName(cxComboBox4.Text).AsString)<>'' then
Begin
UniQuery6.close;
UniQuery6.Sql.Clear;
UniQuery6.Sql.Add('select * from birim');
UniQuery6.Sql.Add('where birim='''+Trim(AdoQuery1.FieldByName(cxComboBox4.Text).AsString)+'''');
UniQuery6.Open;
if UniQuery6.RecordCount>0 then
begin
UniQuery2.FieldByName('BIRIMID').AsString:=Trim(UniQuery6.FieldByName('ID').AsString);
UniQuery2.FieldByName('birim').AsString:=trim(UniQuery6.fieldbyname('birimcode').asstring)+' - '+trim(UniQuery6.fieldbyname('birim').asstring);
end
else
begin
UniQuery7.close;
UniQuery7.sql.clear;
UniQuery7.sql.add('select birimcode from birim');
UniQuery7.sql.add('where birimcode<>''''');
UniQuery7.sql.add('order by birimcode ASC');
UniQuery7.open;
UniQuery7.last;
UniQuery6.Append;
if UniQuery7.recordcount=0 then
begin
UniQuery6.FieldByName('birimcode').AsString:='000001';
end
else
begin
UniQuery6.FieldByName('birimcode').AsString:=numarator(UniQuery7.fieldbyname('birimcode').asstring);
end;
UniQuery6.FieldByName('birim').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox4.Text).AsString);
UniQuery6.Post;
UniQuery2.FieldByName('BIRIMID').AsString:=Trim(UniQuery6.FieldByName('ID').AsString);
UniQuery2.FieldByName('birim').AsString:=trim(UniQuery6.fieldbyname('birimcode').asstring)+' - '+trim(UniQuery6.fieldbyname('birim').asstring);
end;
End;
end;
if Trim(cxComboBox5.Text)<>'Seçim Yok' then
begin
if Trim(AdoQuery1.FieldByName(cxComboBox5.Text).AsString)<>'' then
Begin
UniQuery6.close;
UniQuery6.Sql.Clear;
UniQuery6.Sql.Add('select * from stockgrup');
UniQuery6.Sql.Add('where grupad='''+Trim(AdoQuery1.FieldByName(cxComboBox5.Text).AsString)+'''');
UniQuery6.Open;
if UniQuery6.RecordCount>0 then
begin
UniQuery2.FieldByName('GRUPID').AsString:=Trim(UniQuery6.FieldByName('ID').AsString);
UniQuery2.FieldByName('grup').AsString:=trim(UniQuery6.fieldbyname('grupkod').asstring)+' - '+trim(UniQuery6.fieldbyname('grupad').asstring);
UniQuery2.FieldByName('grupkod').AsString:=trim(UniQuery6.fieldbyname('grupkod').asstring);
end
else
begin
UniQuery7.close;
UniQuery7.sql.clear;
UniQuery7.sql.add('select grupkod from stockgrup');
UniQuery7.sql.add('where grupkod<>''''');
UniQuery7.sql.add('order by grupkod ASC');
UniQuery7.open;
UniQuery7.last;
UniQuery6.Append;
if UniQuery7.recordcount=0 then
begin
UniQuery6.FieldByName('grupkod').AsString:='000001';
end
else
begin
UniQuery6.FieldByName('grupkod').AsString:=numarator(UniQuery7.fieldbyname('grupkod').asstring);
end;
UniQuery6.FieldByName('grupad').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox5.Text).AsString);
UniQuery6.Post;
UniQuery2.FieldByName('GRUPID').AsString:=Trim(UniQuery6.FieldByName('ID').AsString);
UniQuery2.FieldByName('grup').AsString:=trim(UniQuery6.fieldbyname('grupkod').asstring)+' - '+trim(UniQuery6.fieldbyname('grupad').asstring);
UniQuery2.FieldByName('grupkod').AsString:=trim(UniQuery6.fieldbyname('grupkod').asstring);
end;
End;
end;
if Trim(cxComboBox6.Text)<>'Seçim Yok' then
begin
if Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString)<>'' then
Begin
UniQuery6.close;
UniQuery6.Sql.Clear;
UniQuery6.Sql.Add('select * from marka');
UniQuery6.Sql.Add('where marka='''+Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString)+'''');
if Trim(cxComboBox7.Text)<>'Seçim Yok' then
begin
if Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString)<>'' then
begin
UniQuery6.Sql.Add('and model='''+Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString)+'''');
end;
end;
UniQuery6.Open;
if UniQuery6.RecordCount>0 then
begin
UniQuery2.FieldByName('MARKAID').AsString:=Trim(UniQuery6.FieldByName('ID').AsString);
UniQuery2.FieldByName('marka').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString);
if Trim(cxComboBox7.Text)<>'Seçim Yok' then
begin
UniQuery2.FieldByName('model').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString);
UniQuery2.FieldByName('marka').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString)+' / '+Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString);
end;
if Trim(cxComboBox7.Text)='Seçim Yok' then
begin
UniQuery2.FieldByName('marka').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString);
end;
end
else
begin
UniQuery6.Append;
UniQuery6.FieldByName('marka').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString);
if Trim(cxComboBox7.Text)<>'Seçim Yok' then
begin
UniQuery6.FieldByName('model').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString);
if Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString)<>'' then
begin
UniQuery6.FieldByName('markamodel').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString)+' / '+Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString);
end;
if Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString)='' then
begin
UniQuery6.FieldByName('markamodel').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString);
end;
end
else
begin
UniQuery6.FieldByName('markamodel').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString);
end;
UniQuery6.Post;
UniQuery2.FieldByName('MARKAID').AsString:=Trim(UniQuery6.FieldByName('ID').AsString);
UniQuery2.FieldByName('marka').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString);
if Trim(cxComboBox7.Text)<>'Seçim Yok' then
begin
UniQuery2.FieldByName('model').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString);
UniQuery2.FieldByName('marka').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString)+' / '+Trim(AdoQuery1.FieldByName(cxComboBox7.Text).AsString);
end;
if Trim(cxComboBox7.Text)='Seçim Yok' then
begin
UniQuery2.FieldByName('marka').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox6.Text).AsString);
end;
end;
end;
end;
if Trim(cxComboBox8.Text)<>'Seçim Yok' then
begin
if Trim(AdoQuery1.FieldByName(cxComboBox8.Text).AsString)<>'' then
Begin
UniQuery6.close;
UniQuery6.Sql.Clear;
UniQuery6.Sql.Add('select * from kategori');
UniQuery6.Sql.Add('where name='''+Trim(AdoQuery1.FieldByName(cxComboBox8.Text).AsString)+'''');
UniQuery6.Open;
if UniQuery6.RecordCount>0 then
begin
UniQuery2.FieldByName('KATEGORIID').AsString:=Trim(UniQuery6.FieldByName('ID').AsString);
UniQuery2.FieldByName('kategori').AsString:=trim(UniQuery6.fieldbyname('code').asstring)+' - '+trim(UniQuery6.fieldbyname('name').asstring);
end
else
begin
UniQuery7.close;
UniQuery7.sql.clear;
UniQuery7.sql.add('select code from kategori');
UniQuery7.sql.add('where code<>''''');
UniQuery7.sql.add('order by code ASC');
UniQuery7.open;
UniQuery7.last;
UniQuery6.Append;
if UniQuery7.recordcount=0 then
begin
UniQuery6.FieldByName('code').AsString:='000001';
end
else
begin
UniQuery6.FieldByName('code').AsString:=numarator(UniQuery7.fieldbyname('code').asstring);
end;
UniQuery6.FieldByName('name').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox8.Text).AsString);
UniQuery6.Post;
UniQuery2.FieldByName('KATEGORIID').AsString:=Trim(UniQuery6.FieldByName('ID').AsString);
UniQuery2.FieldByName('kategori').AsString:=trim(UniQuery6.fieldbyname('code').asstring)+' - '+trim(UniQuery6.fieldbyname('name').asstring);
end;
End;
End;
if Trim(cxComboBox9.Text)<>'Seçim Yok' then
begin
UniQuery2.FieldByName('salesprice').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox9.Text).AsString);
end;
if Trim(cxComboBox11.Text)<>'Seçim Yok' then
begin
UniQuery2.FieldByName('buyprice').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox11.Text).AsString);
end;
if Trim(cxComboBox10.Text)<>'Seçim Yok' then
begin
if Trim(AdoQuery1.FieldByName(cxComboBox10.Text).AsString)<>'' then
begin
UniQuery2.FieldByName('kdv').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox10.Text).AsString);
end;
if Trim(AdoQuery1.FieldByName(cxComboBox10.Text).AsString)='' then
begin
if Trim(cxComboBox23.Text)='Evet' then
begin
UniQuery2.FieldByName('kdv').AsString:=cxSpinEdit1.Value;
end;
end;
end;
if Trim(cxComboBox12.Text)<>'Seçim Yok' then
begin
if Trim(AdoQuery1.FieldByName(cxComboBox12.Text).AsString)<>'' then
begin
UniQuery2.FieldByName('aliskdv').AsString:=Trim(AdoQuery1.FieldByName(cxComboBox12.Text).AsString);
end;
if Trim(AdoQuery1.FieldByName(cxComboBox12.Text).AsString)='' then
begin
if Trim(cxComboBox23.Text)='Evet' then
begin
UniQuery2.FieldByName('aliskdv').AsString:=cxSpinEdit2.Value;
end;
end;
end;
UniQuery2.Post;
AdoQuery1.Next;
end;
end;
Re: Arka planda kitlenmeden çalışacak uygulama
kodlarında while döngüsü içinde bir kaçtane if şartı gördüm bnim nacizhane fikrim Application.processmessages kodunu while döngüsü içinde kullanmış olduğun diğer her bir query nin başına koy ve while döngüsü içinde başladığın noktaya koyup denermisin.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.