Query sonucu.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Query sonucu.
Merhaba,
SELECT MAX(REF) REFERANS NO FROM tablo_adi.
REF alanı integer.
Bu sorgunun sonucunu normal bir edit e nasıl bağlarım?
Bu sorguyu ileride INSERT INTO da kullanacağım. Yalnız şu an deneme çalışmasında bir edit veya label içinde görmem gerekiyor. Yeni kayıt girileceğinde referans numarası veritabanından +1 artırılarak yeni kayıt ile birlikte database kaydedilecek.
İyi çalışmalar.
SELECT MAX(REF) REFERANS NO FROM tablo_adi.
REF alanı integer.
Bu sorgunun sonucunu normal bir edit e nasıl bağlarım?
Bu sorguyu ileride INSERT INTO da kullanacağım. Yalnız şu an deneme çalışmasında bir edit veya label içinde görmem gerekiyor. Yeni kayıt girileceğinde referans numarası veritabanından +1 artırılarak yeni kayıt ile birlikte database kaydedilecek.
İyi çalışmalar.
Kod: Tümünü seç
query1.sql.add('SELECT MAX(REF) as ref REFERANS NO FROM tablo_adi.');
edit1.text := query1.fieldbyname('ref').asstring;
merhaba ;
Kullandığın DB AutoInc alan destekliyorsa bence daha zahmetsiz olur.
Kolay gelsin.
Kod: Tümünü seç
with query1 do
begin
close;
sql.clear;
sql.add('select max(refno) from referans');
Active:=true;
Edit1.Text:=Fields[0].Asstring;
end;
Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
merhaba ,
Yukarıda ki örnek kodda herhangi bir sorun yok Active:=true satırı istisna oluşturmuyorsa 0 indise sahip tek sütunluk bir veri dönmek zorundadır.
MSSQL otomatik artan alan desteklediğini düşünüyorum.
Kodunuzu inceleyin derim.
kolay gelsin.
Yukarıda ki örnek kodda herhangi bir sorun yok Active:=true satırı istisna oluşturmuyorsa 0 indise sahip tek sütunluk bir veri dönmek zorundadır.
MSSQL otomatik artan alan desteklediğini düşünüyorum.
Kodunuzu inceleyin derim.
kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
- Bil_Bakalım
- Üye
- Mesajlar: 61
- Kayıt: 31 Ara 2004 01:45
- Konum: İzmir
- İletişim:
Kod: Tümünü seç
with query1 do
begin
close;
sql.clear;
sql.add('select max(refno) from referans');
Active:=true;
Edit1.Text:=Fields[0].Asstring;
end;
olarak değişiklik yaparsan sanırım istediğin olacak.
Ayrıca

query1.sql.txt:=' select max(refno) from referans';
query1.open;
edit1.text := inttostr(fields[0].asinteger);
gibi bir kalıp kullanırsan daha kısa bir kod olur diye düşünüyorum.
Merhaba ,
alan nesnelerinde uygun tipler arasında atama yapabilmek için ayrıca bir type casting işlemi yapmanıza gerek yoktur. AsString , AsInteger gibi metodlar uyumlu ise sonucu belirttiğiniz veritipinde döndürecektir. dolayısıyla aslında Integer tipindeki bir alan verisini String bir değişkene AsString metodunu kullanarak zahmetsizce aktarabilirsiniz.
iyi çalışmalar.
alan nesnelerinde uygun tipler arasında atama yapabilmek için ayrıca bir type casting işlemi yapmanıza gerek yoktur. AsString , AsInteger gibi metodlar uyumlu ise sonucu belirttiğiniz veritipinde döndürecektir. dolayısıyla aslında Integer tipindeki bir alan verisini String bir değişkene AsString metodunu kullanarak zahmetsizce aktarabilirsiniz.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
vipaydin yazdı:Sizin dediğiniz gibi Edit1.Text:=Fields[0].AsString;
gibi bir tanımlama da
List Index out of bounds(0) hatası alıyorum.
vkamadan'ın yazdığı kodların işinizi görmesi lazım.
with ifadesinden dolayı gözünüzden kaçan biryer olabilir.
birde şu şekilde deneyin.
Kod: Tümünü seç
query1.close;
query1.sql.clear;
query1.sql.add('select max(refno) from referans');
query1.Active:=true;
Edit1.Text:=query1.Fields[0].Asstring;
Arkadaşlar dikkat edelim. Hata "List Index out of bounds(0) hatası alıyorum." mış. Anlamı Fields[0].AsString; Fields class ına field isimleri eklenmemiş dolayısıyla 0 ıncı field a erişmeye çalışınca hata alırsınız.
Her zaman söylediğim gibi
FieldByName('').As kullanın
Her zaman söylediğim gibi
FieldByName('').As kullanın
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 !!!
merhaba.freeman35 yazdı:Arkadaşlar dikkat edelim. Hata "List Index out of bounds(0) hatası alıyorum." mış. Anlamı Fields[0].AsString; Fields class ına field isimleri eklenmemiş dolayısıyla 0 ıncı field a erişmeye çalışınca hata alırsınız.
Her zaman söylediğim gibi
FieldByName('').As kullanın
hocam öncelikle Fields bir class değil property'dir bildiğim kadarıyla (yanılıyorsam düzeltiniz).ikinci olarak eğer tabloya erişimi sağlayan component bağlantıyı başarılı bir şekilde gerçekleştirmişse TStringList tipinde olan Fields property'sine alanları ekler..aksi halde fieldbyname('').as ya da fields[0].as.. hata döndürecektir..
saygılar..
Fields Property olarak düşünebilirsiniz. Fakat gerçek manada bir class tır.delphi_coder yazdı:merhaba.freeman35 yazdı:Arkadaşlar dikkat edelim. Hata "List Index out of bounds(0) hatası alıyorum." mış. Anlamı Fields[0].AsString; Fields class ına field isimleri eklenmemiş dolayısıyla 0 ıncı field a erişmeye çalışınca hata alırsınız.
Her zaman söylediğim gibi
FieldByName('').As kullanın
hocam öncelikle Fields bir class değil property'dir bildiğim kadarıyla (yanılıyorsam düzeltiniz).ikinci olarak eğer tabloya erişimi sağlayan component bağlantıyı başarılı bir şekilde gerçekleştirmişse TStringList tipinde olan Fields property'sine alanları ekler..aksi halde fieldbyname('').as ya da fields[0].as.. hata döndürecektir..
saygılar..
property Fields: TFields read FFields;
TFields Classı
Kod: Tümünü seç
TFields = class(TObject)
private
FList: TList;
FDataSet: TDataSet;
FSparseFields: Integer;
FOnChange: TNotifyEvent;
FValidFieldKinds: TFieldKinds;
protected
procedure Changed;
procedure CheckFieldKind(FieldKind: TFieldKind; Field: TField);
function GetCount: Integer;
function GetField(Index: Integer): TField;
procedure SetField(Index: Integer; Value: TField);
procedure SetFieldIndex(Field: TField; Value: Integer);
property SparseFields: Integer read FSparseFields write FSparseFields;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
property ValidFieldKinds: TFieldKinds read FValidFieldKinds write FValidFieldKinds;
public
constructor Create(ADataSet: TDataSet);
destructor Destroy; override;
procedure Add(Field: TField);
procedure CheckFieldName(const FieldName: string);
procedure CheckFieldNames(const FieldNames: string);
procedure Clear;
function FindField(const FieldName: string): TField;
function FieldByName(const FieldName: string): TField;
function FieldByNumber(FieldNo: Integer): TField;
procedure GetFieldNames(List: TStrings);
function IndexOf(Field: TField): Integer;
procedure Remove(Field: TField);
property Count: Integer read GetCount;
property DataSet: TDataSet read FDataSet;
property Fields[Index: Integer]: TField read GetField write SetField; default;
end;
Birincisi Okunabilirlik. Bir kodu yazıyoruz yazıyoruz fakat geriye döenbileceğimizi düşünüyormuyuz? ben bu konuya çok dikkat ediyorum. Field[0], fields[1] bunlar nedir hangi alanı işler hoppala her yapılandırmada veriabanına mı dönecem ya ben işi bıraktım yerime gelecek çalışacak arkadaş ne yapacak ? Bunlar çok önemli ! Takım çalışmalarında başarı sağlayabilmek için okunabilrliğe dikkat etmeliyiz.
İkincisi Projemiz bitti teslim ettik ve müşterimizin 15 gün sonra bilemediniz 3 ay sonra (Atıyorum) Ya Ahmet bey ben Cari Kartlarda 2 inci mail adresi kaydedbileceğim bir alan eklemenizi istiyorum. Hoppala ne yapcaz şimdi Yapılandırmamız ve kodlamamamız ne tip sıkıntıya girer? Artık burasınıda size bırakıyorum

Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
ben sadece Fields[0] ibaresini
select count(*) from tablo gibi basit sqller icin moduler yapı hazırlamakta kullanıyorum
mesela
gibi bir yapı dusunebilir ve fonksiyon kutupanemize atabiliriz.
select count(*) from tablo gibi basit sqller icin moduler yapı hazırlamakta kullanıyorum
mesela
Kod: Tümünü seç
function TabloToplam(Qry:TIbQuery;Tablo:String):Integer;
begin
result:=-1;
with Qry do
try
Close;
SQL.Text:='select count(*) from '+Tablo;
Open;
result:=Fields[0].AsInteger;
finally
Close;
end;
end;
ÜŞENME,ERTELEME,VAZGEÇME
delphi_coder yazdı: hocam öncelikle Fields bir class değil property'dir bildiğim kadarıyla (yanılıyorsam düzeltiniz).
Hüseyin in dediğini biraz daha anlaşılır yapmak gerek sanırım.husonet yazdı:Fields Property olarak düşünebilirsiniz. Fakat gerçek manada bir class tır.
Fields TDataSet Class ının bir property(Özelliği) dir. Doğrudur. Ama bu bir class (sınıf [Türkçe karşılığı bana saçma geliyor

Yukarıdaki FieldByName, ParamByName kullanın demekteki gayem,diğer arkadaşlarda anlatmaya çalışmışlar, yazılan kodun daha mantıklı ileriye dönük bir yapı olması, yoksa yazılım hatası zaten Delphi compiler ı izin vermiyor, daha IDE de iken yazım hataları bildiriliyor.
Şimdi fark ettimki "TStringList tipinde olan Fields property'sine" demişsin aman burda yanılgın büyük. TStringList çok farklı bir class. incelemeni öneririm.
"fieldbyname('').as ya da fields[0].as.. hata döndürecektir.." doğru her ikiside hata döndürebilir ama hata ve oluşum sebepleri farklı. Arkadaşın verdiği hatanın sebebi yukarıda yazdın senin söylediğindede kısmen aynı, yani bağlantı sağlanmadıysa TFields içeriği boş olur ve ve alınan hata 0 list index ... yani 0 diye bir kayıt yok gibisinden bir mesaj verir. ama Fieldbyname de ise bu falanca field bulunamıyor diye hata verir. Hata hatadır deniyorsa hem fikiriz. Ama burdaki yani forumun amacı öğretmek ben buyüzden direk konuyu söylemeden etrafındaki konuları anlatmaya çalışırıp ve sorunu kişinin bulmasını isterim yani balık tutmasını öğretmeye çalışırım.
Delphi yi öğrenmek istiyorsanız class ları bir bütün olarak sakın düşünmeyin. en temelden başlayıp yukarıya doğru inceleyin. Bu size daha hakimiyet kazandırır. Orjinal Delphi box ı satın aldığınızda kutudan kitap CD den çok çok daha kıymetli, bir çarşafı aratmıycak büyüklükte class haritası çıkar. Hatta bu harita borland yazılım ekibinin duvarlarında asılıdır

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 !!!
merhaba ,
sayın freeman35
bahsettiğiniz class haritasını nereden bulabiliriz borland ın original box ı haricinde? bizde asalım duvarımıza
kolay gelsin.
sayın freeman35
bahsettiğiniz class haritasını nereden bulabiliriz borland ın original box ı haricinde? bizde asalım duvarımıza

kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Ben web siteme Haritayı ekledim çekebilirsiniz.
http://www.durmus.net/huso/Delphi.pdf
Not : Delphi 5 sürümünün haritasıdır. İlk Delphi ye başladığım zaman bir arkadaş hediye etmişti:)
Kolay Gelsin...
http://www.durmus.net/huso/Delphi.pdf
Not : Delphi 5 sürümünün haritasıdır. İlk Delphi ye başladığım zaman bir arkadaş hediye etmişti:)
Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.