Konu: weeklist hızlandırma
makeweeklist(2000,2099)
Function makeweeklist(tnStart,tnEnd)
tdFDOW = Date(m.tnStart,1,1)
Do While Week(m.tdFDOW,2,2) != 1
tdFDOW = m.tdFDOW + 1
Enddo
Create Cursor weeklist2 (tarih1 d,tarih2 d,cyil c(4),nyil N(4),chafta c(2),nhafta N(2),gun1 c(10),;
gun2 c(10), hafta c(5),nay n(2),guid c(40))
Do While Year(m.tdFDOW) <= m.tnEnd)
Insert Into weeklist2 ;
(tarih1,tarih2,cyil,chafta,gun1,gun2,nyil,nhafta,hafta,nay);
VALUES ;
(m.tdFDOW, ;
m.tdFDOW+6,;
PADL(Year(m.tdFDOW+Iif(Week(m.tdFDOW,2,2)=1,6,0)),4),;
PADL(Week(m.tdFDOW,2,2),2,'0'),;
CDOW(m.tdFDOW),;
CDOW(m.tdFDOW+6),;
VAL(Padl(Year(m.tdFDOW+Iif(Week(m.tdFDOW,2,2)=1,6,0)),4)),;
VAL(Padl(Week(m.tdFDOW,2,2),2,'0')),;
Padl(Right(Ltrim(Str(Year(m.tdFDOW))),2), 2, '0')+'-' + Padl(Week(m.tdFDOW,2,2),2,'0'),;
MONTH(m.tdFDOW+3))
tdFDOW = m.tdFDOW + 7
Enddo
Endfunc
bu kod ile week list oluşturdum ve sql e kayıt yaptım.
Function datetostr
Lparameters tdTrh
Local lcTrh, lcSet, lcDon
m.lcSet = Set("Date")
Set Date Ymd
m.lcTrh = Dtoc(tdTrh)
Set Date &lcSet
If !Empty(Left(lcTrh,2))
*m.lcDon = "'"+Chrtran(lcTrh,"/","-")+"'"
m.lcDon = Chrtran(lcTrh,"/","-")
Else
m.lcDon = ''
Endif
Return m.lcDon
? datetoweekstring(Date())
Function datetoweekstring(Ldtarih,lnsayi)
Local lcfil,lcal
lcfil=''
m.lcal = Alias()
If !Empty(Ldtarih)
If Used('HaftaTampon')
Use In 'HaftaTampon'
Endif
lcfil="'"+datetostr(Ldtarih)+"'"
TEXT TO LCCUMLE NOSHOW TEXTMERGE
USE wka2009
select TOP 1 * from haftaliste WHERE <<m.lcfil>> between tarih1 and tarih2
ENDTEXT
mysqlexec(appcmds.lnhandle,M.LCCUMLE,'HaftaTampon')
Lcdonus=HaftaTampon.hafta
If Used('HaftaTampon')
Use In 'HaftaTampon'
Endif
If !Empty(m.lcal)
Select &lcal
Endif
Return Lcdonus
Else
Wait Window 'Tarih hatalı. Bilgi işleme bigli veriniz.'
Endif
Endfunc
bu kod ile haftalistesi (sql table) dan select ile gelen sonuc yavaş oluyor. 200 kayıtlık bi veriyi Scan ... endscan arasına aldıp çalıştırdığımda kayıt ekran da atlamayı görüyorum 20 saniye kadar sürüyor.
Daha da hızlandırmanın bir yolu varmı?
CREATE TABLE [dbo].[haftaliste](
[tarih1] [datetime] NULL,
[tarih2] [datetime] NULL,
[cyil] [nchar](4) COLLATE SQL_Latin1_General_CP1254_CI_AS NULL CONSTRAINT [DF_haftalistesi_cyil] DEFAULT (''),
[nyil] [int] NULL CONSTRAINT [DF_haftalistesi_nyil] DEFAULT ((0)),
[chafta] [nchar](2) COLLATE SQL_Latin1_General_CP1254_CI_AS NULL CONSTRAINT [DF_haftalistesi_chafta] DEFAULT (''),
[nhafta] [int] NULL CONSTRAINT [DF_haftalistesi_nhafta] DEFAULT ((0)),
[hafta] [nchar](5) COLLATE SQL_Latin1_General_CP1254_CI_AS NULL CONSTRAINT [DF_haftalistesi_hafta] DEFAULT (''),
[gun1] [nchar](10) COLLATE SQL_Latin1_General_CP1254_CI_AS NULL,
[gun2] [nchar](10) COLLATE SQL_Latin1_General_CP1254_CI_AS NULL,
[nay] [int] NULL CONSTRAINT [DF_haftaliste_nay] DEFAULT ((0)),
[acan] [char](10) COLLATE SQL_Latin1_General_CP1254_CI_AS NULL CONSTRAINT [DF_haftalistesi_acan] DEFAULT (user_name()),
[actar] [datetime] NULL,
[duzelten] [char](10) COLLATE SQL_Latin1_General_CP1254_CI_AS NULL CONSTRAINT [DF_haftalistesi_duzelten] DEFAULT (''),
[duzelttar] [datetime] NULL,
[guid] [uniqueidentifier] NOT NULL CONSTRAINT [DF_haftalistesi_guid] DEFAULT (newid()),
[sirano] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_haftalistesi] PRIMARY KEY CLUSTERED
(
[sirano] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
week listin sql oluşturma kodu.