S.A.
Otomatik kutu adedi girildiği zaman kolinin başlangıç ve bitiş nolarını editlere atıyorum ve kayıt yapıyorum fakat programı kapattık tekrar açtığım zaman aynı sevkiyat la ilgili ise en son kaydettiğim başlangıç no hangisi ise o editboxa yazılıp 1 arttırılması lazım....Ben yapmaya çalıştım olmadı...
var
a:integer;
u:integer;
begin
a:=0;
dm2.sevdetaildataset1.First;
while not dm2.sevdetaildataset1.Eof do
begin
if (dm2.sevdetaildataset1SEVKIYAT_NO.Text=DBEdit13.Text) then [Eğer Sevkiyat nosu database de varsa bu no ile kayıt girilmiş ve koli başlangıç nosu eklenmiştir...Bu arada koli başlangıç nosu için ilk kayıt için yaptığım şey çalışıyor yani default değeri 1 hep 1 geliyor....zaten istediğim programda ilk kayıt yapıldıktan sonra 2. kayıtta son girilen kutu baş nosunun en son kaydın 1 fazla olması.
begin
a:=1
end;
dm2.sevdetaildataset1.Next;
end;
if (a=0) then //
begin
TabSheet2.TabVisible:=false;
end;
if (a=1) then //kayıt var
begin
dm2.sevdetaildataset1.Last;
Sevkiyatgiris.Edit14.Text:=dm2.sevdetaildataset1KOLI_NO_BAS.Text;
u:=dm2.sevdetaildataset1KOLI_NO_BAS.AsInteger;
Sevkiyatgiris.Edit14.Text:=u+1;
ShowMessage('Koli No Başlangıç Konumlandı')
end;
Valla çok da bilmediğim için yardımcı olursanız sevinirim Yapamadım...
Peki bunu ibquery ile yaptım...Kusura bakmayın kolay bir soru olacak ama...query eklediğim bu max olayında o fieldla ilgili en büyük değeri buldum peki bunun bir fazlasını sql ile edit nesnesine nasıl aktaracam...
procedure TSevkiyatgiris.BitBtn1Exit(Sender: TObject);
var
a:integer;
u:integer;
begin
a:=0;
dm2.sevdetaildataset1.First;
while not dm2.sevdetaildataset1.Eof do
begin
if (dm2.sevdetaildataset1SEVKIYAT_NO.Text=DBEdit13.Text) then
begin
a:=1
end;
dm2.sevdetaildataset1.Next;
end;
if (a=0) then //kayıt yok
begin
TabSheet2.TabVisible:=false;
end;
if (a=1) then //kayıt var
begin
dm2.IBQuery2.Active := False;
dm2.IBQuery2.SQL.Clear;
dm2.IBQuery2.SQL.Add('select max(KOLI_NO_BAS) from SEVKIYATDETAIL')
Edit14.text:=dm2.IBQuery2KOLI_NO_BAS.value+1;
ShowMessage('Koli No Başlangıç Konumlandı')
end;
end;
Burada Edit14.text:=dm2.IBQuery2KOLI_NO_BAS.value+1;
Burada dediğiniz gibi max kayıda konumlanıp en son max kayıdın bir fazlasını edit14 yazmak istiyorum...string and integer diyor değer integer, field da integer....
Nasıl halledebilirim dönüşüm yapmaya çalıştım onuda yapamaadım.
Eeğer dm2.IBQuery2KOLI_NO_BAS.asinteger null dönerse hata verebilir ona göre. onu engellemek için try except arasında alabilirsin (tabi eğer böyle bir ihtimal varsa).
Kolay Gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Peki hocam benim yapmak istediğimi umarım anlamışsınızdır bir kayıt yapıyor bu yeni kayıt olsun kayıt giriyor giriyor programı kapatıyor tekrar aynı açtığı kayıda detail kayıt gireceği zaman bu koliler arasında otomatik no ayarlıyorum...ama en son hangi no da kaldıysa o noya konumlanıp editin değerini 1 arttırması ve kayıda devam etmesi diğer editleri zaten o edit14 başlangıç değerine göre değer alıyor...Tabi birde önceden kayıt var mı sevkiyat nosu ile ilgili eğer yoksa bu kayda konumlanma olayı çalışmaması lazım....Peki ben bunu oncreate de yaptım...Başka bir event kullanılabilirmiydi daha mantıklı....
S.A.
eğer girdiğin rakamı vt de tutuyorsan zaten rakam elindedir ordan okuyup bir arttırıp kullanırsın.
yok vt ye yazmıyorsan formun onclose eventinde registere yazarsın. onshow dada registerden okursun.
Eğer formu free etmiyorsan oncreate sadece bir kere çalışır. formu kapatıp tekrar açtığın zaman (programı değil) oncreate çalışmaz. Ona göre hangisi senin işini göörüyorsa onu kullanmalısın.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
veritabanında tutuyorum tabi iki tane edit düşün koli no baslangıç ve koli no bitiş değerleri var sen malın kaç adet olduğunu giriyorsun prgrama kaç kutu kullandığını giriyorsun o koli no bas ve bitiş nolarını stok kodlarına göre vs. ayarlıyor ilk kayıtta...ama benim problemim daha sonra eski kaydı güncelleyeceği zaman o ilk hesaplamaya başladığı editin en son koli no başlangıç nosu neyse bir fazlasının o edite yazılması...Bu arada aşağıdaki kodda sevkyiat açılmışmı o no ile o da var..Yani kayıt edilen database de sevkiyat no varsa demekki önceden mal girilmiş ve bu başlangıç bitiş nolarından oluşmuş ha o zaman git son noya bak su edite bir artır yaz..olayı....ama hala hata alıyorum anlamadım...
Bu arada yine aynı hata missing operator or semicolon....
procedure TSevkiyatgiris.FormCreate(Sender: TObject);
var
z:integer;
begin
z:=0;
dm2.sevdetaildataset1.First;
while not dm2.sevdetaildataset1.Eof do
begin
if (dm2.sevdetaildataset1SEVKIYAT_NO.Text=DBEdit13.Text) then
begin
z:=1
end;
dm2.sevdetaildataset1.Next;
end;
if (z=0) then //kayıt yok
begin
TabSheet2.TabVisible:=false;
end;
if (z=1) then //kayıt var
begin
with dm2.IBQuery2 do
dm2.IBQuery2.Active := False;
dm2.IBQuery2.SQL.Add('select max (KOLI_BAS_NO) from SEVKIYATDETAIL')
edit14.Text:=inttostr(dm2.IBQuery2KOLI_NO_BAS.AsInteger+1);
end;
end;