Delphi FMX Mobil de Enter Tuşu İle İlermek

Mobil uygulama klavyedeki Enter tuşuna basınca sonraki işleme yapmak için kullandığım kod

procedure TForm.SifreKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
  Shift: TShiftState);
begin
  if sender is TEdit then
    if Key in [vkReturn] then
      case TEdit(sender).ReturnKeyType   of
        TReturnKeyType.Send : Button1Click(Self);
      end;
end;
Delphi FMX Grid Renklendirme

Delphi Firemonkey string grid renklendirme kodu

procedure TForm.StringGrid1DrawColumnCell(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
const Row: Integer; const Value: TValue; const State: TGridDrawStates);
 
begin
 aRowColor := TBrush.Create(TBrushKind.Solid, TAlphaColors.Alpha);
 
if Sartim > 0 then
  aRowColor.Color := TAlphaColorRec.Aqua
else
if Sartim  = 0 Then
  ARowColor.Color := TAlphaColorRec.Lime
else
if Sartim  <  0 then
  aRowColor.Color := TAlphaColorRec.Aliceblue;
 
aNewRectF := Bounds;
aNewRectF.Inflate(3, 3);
Canvas.FillRect(aNewRectF, 0, 0, [], 1, aRowColor);
Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State);
 
aRowColor.free;
 
 
 
end;
SQL Server İki Tablo Arası Update

Aşağıdaki script ile farklı tablolardan update işlemi yapılabilir


   UPDATE T1
   SET UPDATEALAN = T2.VERIALANI
   FROM UPDATETABLO T1
   JOIN VERITABLO T2
   ON T1.[UPDATEESLESMEALANI] = T2.VERIESLESME ALANI



Birden fazla alanı güncellemek için ise SET alanınındaki yerleri virgül ile ayırarak birden fazla alanı güncelleyebiliriz

       SET UPDATEALAN = T2.VERIALANI , UPDATEALAN2 = T2.VERIALANI2 , UPDATEALAN3 = T2.VERIALANI3
SQL Server Link Server Oluşturma
exec sp_addlinkedserver @server='LinkServerADI', @srvproduct='', @provider='SQLOLEDB', @datasrc='SERVERADI'
exec sp_addlinkedsrvlogin 'LinkServerADI', 'False', Null, 'SQLKullanıcı', 'SQLŞifre'


Script Çalıştırıldıktan sonra

Link server oluşturduğumuz serverdaki tabloları aşağı komut ile görüntüleyebiliriz

select * from LinkServerADI.Database.dbo.Tablo
SQL Server Log Dosyası Küçültme

Sql Server daki ldf dosyalarının boyutlarını aşağıdaki script ile küçültebiliriz

USE   DatabaseName
ALTER DATABASE  DatabaseName
SET RECOVERY SIMPLE
GO


USE   DatabaseName
DBCC SHRINKFILE (DatabaseName_Log, 500)  --- Buradaki 500 yazısı log dosyasının küçültüleceği boyutudur bu örnek de  500 mb olarak küçültülür
GO

USE   DatabaseName
ALTER DATABASE  DatabaseName
SET RECOVERY FULL
GO
E-Fatura QR Code Ekleme

E-Fatura xlst template dosyamıza qr code ekleyebiliriz. Bunun için bir web api yada base64 e çevrilmiş bir qrcode resmi kullanmamız gerekir

Gösteceğim örnek dinamik gelen bir qrcode verisini web api kullanarak qrcode u base64 olarak alıp e-fatura dosyasında göstereceğiz .

	<img>
		  <xsl:attribute name="src"> https://api.qrserver.com/v1/create-qr-code/?data=https://www.ahmetaydinlik.com&amp;size=150x150</xsl:attribute>
		  <xsl:attribute name="height">150</xsl:attribute>
		  <xsl:attribute name="width">150</xsl:attribute>
	</img>

xsl:attribute komutu ile image nesnemin özelliklerini atıyorum.

eğer burada dinamik bir veri dönüştürmek isteseydik src verimizin içeriğini değiştirirek api serverdaki data parametresine dinamik verimizi eklersek istediğimiz veriyi bize 150px boyutunda bir qrcode oluşturur

ekran görüntüsü

aşağıdaki komut ile örneğe bakabilirsiniz


<img>
     <xsl:attribute name="src"> https://api.qrserver.com/v1/create-qr-code/?data=<xsl:for-each select="//n1:DespatchAdvice/cbc:Note[2]"><xsl:value-of select="."/></xsl:for-each>&amp;size=150x150</xsl:attribute>
	 <xsl:attribute name="height">150</xsl:attribute>
	 <xsl:attribute name="width">150</xsl:attribute>
</img>


Burada e-fatura xml dosyasında gelen not 2 deki veriyi qrcode a yerleştirdik

E-Fatura Not Alanından Veri Alma

E-Fatura xslt template dosyasında not alanlarına yazılmış olan notlardan belirli karakterler arasında veri almak için aşağıdaki komutu kullanabiliriz

     <xsl:for-each select="//n1:DespatchAdvice/cbc:Note[3]">									 
	      <xsl:value-of select="substring-before(substring(.,0,21),'#')"/>	
	 </xsl:for-each>


Yukarıda yazılı olan substring-before komutu ile not alanında gelen kelimin 0 ıncı karakterinden başyalıp 21 inci karaktere kadar yazmasını istedik

Asp SQL Injection Temizleme function
Function Temizle(strVeri)
	If strVeri = "" Then Exit Function

	strVeri = Replace(strVeri, "<", "&amp;lt;")
	strVeri = Replace(strVeri, ">", "&amp;gt;")
	strVeri = Replace(strVeri, "[", "&amp;#091;")
	strVeri = Replace(strVeri, "]", "&amp;#093;")
	strVeri = Replace(strVeri, """", "", 1, -1, 1)
	strVeri = Replace(strVeri, "=", "&amp;#061;", 1, -1, 1)
	strVeri = Replace(strVeri, "'", "''", 1, -1, 1)
	strVeri = Replace(strVeri, "Select", "sel&amp;#101;ct", 1, -1, 1)
	strVeri = Replace(strVeri, "join", "jo&amp;#105;n", 1, -1, 1)
	strVeri = Replace(strVeri, "union", "un&amp;#105;On", 1, -1, 1)
	strVeri = Replace(strVeri, "where", "wh&amp;#101;re", 1, -1, 1)
	strVeri = Replace(strVeri, "insert", "ins&amp;#101;rt", 1, -1, 1)
	strVeri = Replace(strVeri, "Delete", "del&amp;#101;te", 1, -1, 1)
	strVeri = Replace(strVeri, "Update", "up&amp;#100;ate", 1, -1, 1)
	strVeri = Replace(strVeri, "Like", "lik&amp;#101;", 1, -1, 1)
	strVeri = Replace(strVeri, "drop", "dro&amp;#112;", 1, -1, 1)
	strVeri = Replace(strVeri, "create", "cr&amp;#101;ate", 1, -1, 1)
	strVeri = Replace(strVeri, "modify", "Mod&amp;#105;fy", 1, -1, 1)
	strVeri = Replace(strVeri, "rename", "ren&amp;#097;Me", 1, -1, 1)
	strVeri = Replace(strVeri, "alter", "alt&amp;#101;r", 1, -1, 1)
	strVeri = Replace(strVeri, "cast", "ca&amp;#115;t", 1, -1, 1)
	
	Temizle = strVeri

End Function
Asp Sql Server uygun tarih çevirme function
Function TarihDondur(tarih)
			tarihParcalar = Split(tarih, ".")
			Dim gun
			gun = FormatNumber(tarihParcalar(0), 0)
			If Len(gun) = 1 Then
				gun = "0" & gun
			End If
			Dim ay
			ay = FormatNumber(tarihParcalar(1), 0)
			If Len(ay) = 1 Then
				ay = "0" & ay
			End If
			Dim yil
			yil = tarihParcalar(2)
			TarihDondur =  yil& "-" & ay & "-" & gun
	 	
	end function 

Kullanımı

  <%= TarihDondur("29.10.1986")%>
  Ekran Çıktısı : 1986-10-29