Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
(16-04-2019, Saat: 08:51)mrmarman Adlı Kullanıcıdan Alıntı: Havanda su dövülüyor.
@Tuğrul HELVACI cevabı vermiş neden gözden kaçırıyorsunuz?
sonuc := format( 'GSM%.12d', [ rakam ]);
mrmarman hocam ben onu kaçırmadım
Edit2.Text:= format( 'GSM%.12d', [1111]);
bu şekilde sorun yok. Fakat ben bur da ki [1111] değeri ;
FatuNo.Close;
FatuNo.SQL.Clear;
FatuNo.SQL.Text:='select MAX(NUMARA)+1 AS SONKAYIT from TBLFATUNO WHERE SUBE_KODU=''0'' AND TIP=''1'' AND NUMARA LIKE ''000%''';
FatuNo.Open;
Edit2.Text :=FatuNo.FieldByName('SONKAYIT').Text;
SONKAYIT dan çekiyorum.
Edit2.Text:= format( 'EFA%.12d', [Edit2.Text]);
bu şekilde yapamadım.
Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868 Üstad
(16-04-2019, Saat: 10:10)OZCANK Adlı Kullanıcıdan Alıntı: (16-04-2019, Saat: 08:51)mrmarman Adlı Kullanıcıdan Alıntı: Havanda su dövülüyor.
@Tuğrul HELVACI cevabı vermiş neden gözden kaçırıyorsunuz?
sonuc := format( 'GSM%.12d', [ rakam ]);
mrmarman hocam ben onu kaçırmadım
Edit2.Text:= format( 'GSM%.12d', [1111]);
bu şekilde sorun yok. Fakat ben bur da ki [1111] değeri ;
FatuNo.Close;
FatuNo.SQL.Clear;
FatuNo.SQL.Text:='select MAX(NUMARA)+1 AS SONKAYIT from TBLFATUNO WHERE SUBE_KODU=''0'' AND TIP=''1'' AND NUMARA LIKE ''000%''';
FatuNo.Open;
Edit2.Text :=FatuNo.FieldByName('SONKAYIT').Text;
SONKAYIT dan çekiyorum.
Edit2.Text:= format( 'EFA%.12d', [Edit2.Text]);
bu şekilde yapamadım.
SONKAYIT alanınız NUMARA alanının en yüksek değerine 1 ekleyerek elde edildiğine göre; bu durumda, ilgili alanın (field'ın) değerini neden string olarak alıp kullanmaya çalışıyorsunuz ? (.Text)
Format fonksiyonun içinde belirtilen %d bir sayısal değer beklendiğini ifade eder, siz ise string bir değer geçmeye çalışıyorsunuz. İlgili Format fonksiyonunun içinde değeri FieldByName('SONKAYIT').AsInteger biçiminde geçerseniz sorun kalmayacak.
Ancak not olarak belirtmekte yarar görüyorum; projede ilerlemeden evvel kendinize de yatırım yapmaya zaman tanıyın.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 1.571
Konuları: 88
Kayıt Tarihi: 09-08-2016
Rep Puanı: 13.829 Üstad
(16-04-2019, Saat: 10:41)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Ancak not olarak belirtmekte yarar görüyorum; projede ilerlemeden evvel kendinize de yatırım yapmaya zaman tanıyın.
+1
There's no place like 127.0.0.1
Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
16-04-2019, Saat: 11:03
(Son Düzenleme: 16-04-2019, Saat: 11:05, Düzenleyen: OZCANK.)
(16-04-2019, Saat: 10:41)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: (16-04-2019, Saat: 10:10)OZCANK Adlı Kullanıcıdan Alıntı: mrmarman hocam ben onu kaçırmadım
Edit2.Text:= format( 'GSM%.12d', [1111]);
bu şekilde sorun yok. Fakat ben bur da ki [1111] değeri ;
FatuNo.Close;
FatuNo.SQL.Clear;
FatuNo.SQL.Text:='select MAX(NUMARA)+1 AS SONKAYIT from TBLFATUNO WHERE SUBE_KODU=''0'' AND TIP=''1'' AND NUMARA LIKE ''000%''';
FatuNo.Open;
Edit2.Text :=FatuNo.FieldByName('SONKAYIT').Text;
SONKAYIT dan çekiyorum.
Edit2.Text:= format( 'EFA%.12d', [Edit2.Text]);
bu şekilde yapamadım.
SONKAYIT alanınız NUMARA alanının en yüksek değerine 1 ekleyerek elde edildiğine göre; bu durumda, ilgili alanın (field'ın) değerini neden string olarak alıp kullanmaya çalışıyorsunuz ? (.Text)
Format fonksiyonun içinde belirtilen %d bir sayısal değer beklendiğini ifade eder, siz ise string bir değer geçmeye çalışıyorsunuz. İlgili Format fonksiyonunun içinde değeri FieldByName('SONKAYIT').AsInteger biçiminde geçerseniz sorun kalmayacak.
Ancak not olarak belirtmekte yarar görüyorum; projede ilerlemeden evvel kendinize de yatırım yapmaya zaman tanıyın.
Tuğrul Hocam ; Benim +1 değer artırmakla sorunum yok sorunum;
Tabloda Kayıtlı Son Değer : 000000000415832
bu değeri bu şekilde bir artırmak : 000000000415833
SQL de de denedim cevirmeye çalıştım sonuç aynı.
Ilk Üç rakamı Edit alanında seri takip isterse "GSM", "ASM" her ne olursa verebilir diyede ayırdım.
SELECT CAST(MAX(NUMARA) AS NVARCHAR (15)) +1 AS SONUC1 FROM TBLFATUNO WHERE SUBE_KODU='0' AND TIP='1' AND NUMARA LIKE '000%'
GROUP BY NUMARA
bu cümlenin sonucu : 415833
Yorumları: 902
Konuları: 68
Kayıt Tarihi: 30-06-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 8.392 Üstad
@ Tuğrul HELVACI 'nın dediği, sizin gözden kaçırdığınız kısım "Edit2.Text:= format( 'EFA%.12d', [Edit2.Text]);" varya, hah oradaki "Edit2.text"in veri tipi "String", Integer değil, aynı kodun içinde "%.12d" geçen kısım ise sizden "Integer" tipinde bir parametre istiyor, siz ise oraya String bir parametre yazıyorsunuz. Yapamamanızın sebebi bu.
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
(16-04-2019, Saat: 11:03)OZCANK Adlı Kullanıcıdan Alıntı: (16-04-2019, Saat: 10:41)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: SONKAYIT alanınız NUMARA alanının en yüksek değerine 1 ekleyerek elde edildiğine göre; bu durumda, ilgili alanın (field'ın) değerini neden string olarak alıp kullanmaya çalışıyorsunuz ? (.Text)
Format fonksiyonun içinde belirtilen %d bir sayısal değer beklendiğini ifade eder, siz ise string bir değer geçmeye çalışıyorsunuz. İlgili Format fonksiyonunun içinde değeri FieldByName('SONKAYIT').AsInteger biçiminde geçerseniz sorun kalmayacak.
Ancak not olarak belirtmekte yarar görüyorum; projede ilerlemeden evvel kendinize de yatırım yapmaya zaman tanıyın.
Tuğrul Hocam ; Benim +1 değer artırmakla sorunum yok sorunum;
Tabloda Kayıtlı Son Değer : 000000000415832
bu değeri bu şekilde bir artırmak : 000000000415833
SQL de de denedim cevirmeye çalıştım sonuç aynı.
Ilk Üç rakamı Edit alanında seri takip isterse "GSM", "ASM" her ne olursa verebilir diyede ayırdım.
SELECT CAST(MAX(NUMARA) AS NVARCHAR (15)) +1 AS SONUC1 FROM TBLFATUNO WHERE SUBE_KODU='0' AND TIP='1' AND NUMARA LIKE '000%'
GROUP BY NUMARA
bu cümlenin sonucu : 415833
Tuğrul Hocam Teşekkür ederim bu şekilde çözdüm paylaşmak istedim.
procedure TForm23.DBGrid1DblClick(Sender: TObject);
Var
EFATSERI:String;
EFATSERISN:Integer;
begin
FatuNo.Close;
FatuNo.SQL.Clear;
FatuNo.SQL.Text:='select MAX(NUMARA)+1 AS SONKAYIT from TBLFATUNO WHERE SUBE_KODU=''0'' AND TIP=''1'' AND NUMARA LIKE ''000%''';
FatuNo.Open;
Edit2.Text :=FatuNo.FieldByName('SONKAYIT').AsString;
EFATSERI := AnsiLeftStr((Edit2.Text),3);
EFATSERISN := StrToInt(Edit2.Text);
EFATSERILK.Text := EFATSERI;
EFATSERSON.Text := Format('GSM%.12d',[EFATSERISN]);
Edit5.Text :=FatuNo.FieldByName('SONKAYIT').AsString;
Edit2.Text:=EFATSERSON.Text;
Edit7.Text:=Label19.Caption+Edit2.Text+DBEdit2.Text;
end;
Sonuç istediğim gibi
GSM000000415833
Son bir sorum;
EFATSERSON.Text := Format('GSM%.12d',[EFATSERISN]);
'GSM' Alanını ben parametrik yapmak istiyorum. Parametreler kısmım da "Form9.Edit3.Text" de 3 karakterlik "000" de olabilir "GSM" de olabilir bu değeri nasıl Format kısmına eklerim ?
şöyle yapıyorum olmuyor;
Format('Form9.Edit3.Text%.12d',[EFATSERISN]);
gibi olamaz mı?
Yorumları: 902
Konuları: 68
Kayıt Tarihi: 30-06-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 8.392 Üstad
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
Yorumları: 1.571
Konuları: 88
Kayıt Tarihi: 09-08-2016
Rep Puanı: 13.829 Üstad
Siz bence öncelikle Format fonksiyonunu bir araştırın.
There's no place like 127.0.0.1
Yorumları: 235
Konuları: 28
Kayıt Tarihi: 05-05-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.177 Programcı
16-04-2019, Saat: 12:30
(Son Düzenleme: 16-04-2019, Saat: 12:36, Düzenleyen: elixir84.)
Bununla ilgili genel olarak kullandığım SQL Function var. Belge Nosunu arttırıyor.
CREATE FUNCTION [dbo].[tekfunc_FATNOVER](@TIP VARCHAR(2),@SERI VARCHAR(5),@SUBE_KODU INT)
RETURNS @FATNOTEMP TABLE (FATURANO VARCHAR(15))
AS
BEGIN
DECLARE @FATUNO VARCHAR(15)
DECLARE @CEVRILEN VARCHAR(15)
DECLARE @I INT
DECLARE @TMP INT
DECLARE @TEMP VARCHAR(15)
DECLARE @TEMP1 VARCHAR(15)
IF @SERI<>''
BEGIN
SELECT @FATUNO = (SELECT TOP 1 NUMARA FROM TBLFATUNO WHERE TIP=@TIP AND SERI=@SERI AND SUBE_KODU=@SUBE_KODU)
END
IF @SERI=''
BEGIN
SELECT @FATUNO = (SELECT TOP 1 NUMARA FROM TBLFATUNO WHERE TIP=@TIP AND SERI IS NULL AND SUBE_KODU=@SUBE_KODU)
END
SELECT @I=(SELECT LEN(@FATUNO))
SELECT @CEVRILEN=''
/** TERS CEVIR **/
WHILE @I>0
BEGIN
SELECT @CEVRILEN=@CEVRILEN+SUBSTRING(@FATUNO,@I,1)
SELECT @I=@I-1
END
/** TERS CEVIR **/
SELECT @I=0
WHILE @I<(SELECT LEN(@FATUNO))
BEGIN
SELECT @I=@I+1
IF SUBSTRING(@CEVRILEN,@I,1)='9'
BEGIN
SELECT @CEVRILEN=LEFT(@CEVRILEN,@I-1)+'0'+RIGHT(@CEVRILEN,15-@I)
CONTINUE
END ELSE
IF SUBSTRING(@CEVRILEN,@I,1)<9 OR SUBSTRING(@CEVRILEN,@I,1)>=0
BEGIN
SELECT @TEMP=SUBSTRING(@CEVRILEN,@I,1)+1
SELECT @TMP=@I
BREAK
END
IF SUBSTRING(@CEVRILEN,@I,1)='Z'
BEGIN
SELECT @CEVRILEN=LEFT(@CEVRILEN,@I-1)+'A'+RIGHT(@CEVRILEN,15-@I)
CONTINUE
END ELSE
IF SUBSTRING(@CEVRILEN,@I,1)<'Z' OR SUBSTRING(@CEVRILEN,@I,1)>='A'
BEGIN
SELECT @TEMP=ASCII(SUBSTRING(@CEVRILEN,@I,1))
SELECT @TEMP=SUBSTRING(@CEVRILEN,@I,1)+1
SELECT @TEMP=CHAR(@TEMP)
SELECT @TMP=@I
BREAK
END
END/** WHILE SONU**/
SELECT @I=0
WHILE @I<LEN(@FATUNO)
BEGIN
SELECT @I=@I+1
IF @TMP=@I
IF SUBSTRING(@TEMP,1,1)<=9 OR SUBSTRING(@TEMP,1,1)>=0
BEGIN
SELECT @CEVRILEN=LEFT(@CEVRILEN,@I-1)+SUBSTRING(@TEMP,1,1)+RIGHT(@CEVRILEN,15-@I)
END ELSE
BEGIN
SELECT @CEVRILEN=LEFT(@CEVRILEN,@I-1)+SUBSTRING(@TEMP,1,1)+RIGHT(@CEVRILEN,15-@I)
END
SELECT @CEVRILEN=LEFT(@CEVRILEN,@I-1)+SUBSTRING(@CEVRILEN,@I,1)+RIGHT(@CEVRILEN,15-@I)
END
SELECT @FATUNO=@CEVRILEN
SELECT @I=(SELECT LEN(@FATUNO))
SELECT @CEVRILEN=''
WHILE @I>0
BEGIN
SELECT @CEVRILEN=@CEVRILEN+SUBSTRING(@FATUNO,@I,1)
SELECT @I=@I-1
END
SELECT @FATUNO=@CEVRILEN
INSERT INTO @FATNOTEMP VALUES (@FATUNO)
RETURN
Delphi Kod :
Function TersCevir(no:String):String;
var
Cevrilen:String;
i:Integer;
Begin
i:= 0;
Cevrilen := '';
For i := length(no) DownTo 1 Do
Begin
Cevrilen := Cevrilen + no[i];
End;
Result := Cevrilen;
End;
Function Numarator(no:String):String;
var
Nmr, Temp, Temp1:String;
Temp2:Char;
i, Tmp:Integer;
Begin
nmr := TersCevir(no);
i:= 0;
while i < length(no) Do
Begin
i := i + 1;
if nmr[i] = '9' Then
begin
nmr[i] := '0';
continue;
End
Else
if (nmr[i] < '9') and (nmr[i] >= '0') Then
Begin
Temp := inttostr(StrToInt(nmr[i]) + 1);
Tmp := i;
Break;
end;
if nmr[i] = 'Z' Then
begin
nmr[i] := 'A';
continue;
End
Else
if (nmr[i] < 'Z') or (nmr[i] >= 'A') Then
Begin
Temp := inttostr(ord(nmr[i]));
Temp := intToStr(StrToInt(Temp) + 1);
Temp := Chr(StrToInt(Temp));
Tmp := i;
Break;
end;
End;
i:= 0;
while i < length(no) do
Begin
i := i + 1;
if tmp = i Then
if (temp[1] <= '9') and (temp[1] >= '0') Then
nmr[i] := temp[1]
Else
Begin
nmr[i] := Temp[1];
End;
nmr[i] := nmr[i];
End;
result := TersCevir(nmr);
End;
Yorumları: 356
Konuları: 58
Kayıt Tarihi: 16-12-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 111 Başlangıç
Arkadaşlar bu şekilde çözdüm bunu da paylaşmak istedim ;
EFATSERSON.Text := EFATSERI + Format('%.12d',[EFATSERISN]);
Emeği geçen herkesin yüreğine sağlık. İlgi ve alakanızdan dolayı çok teşekkür ediyorum.
|