1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
| *!* Author : Ugur YILMAZ
*!* Todo : INDEX Optimizasyonu....
PARAMETERS tcHesapType, tcMusteriType
LOCAL ;
lcHesapType, lcMusteriType, ;
lcAdetCur, lcAdetType, ;
lcSipAtlCur, lcSipAtlType, ;
lcSipMusCur, lcSipMusType, ;
lcSqlText, lcTempMyDeg, lnStart , lnStop
lnStart = Seconds()
WAIT WINDOW "Veritabanları ilişkilendiriliyor. Lütfen bekleyiniz..." + CHR(13) + ;
"Bu işlem verilerin büyüklüğüne göre bir kaç dakika sürebilir." NOWAIT
*!* 1 - Tbl ön kullanım dosyaları yoksa en önce bu dosyaları oluştur.
IF !File("TbAmodel.DBF") OR !File("TbAdet.DBF") OR !File("TbSipAtl.DBF") OR !File("TbSipMus.DBF")
DO TbOlustur
ENDIF
DO CASE
CASE Pcount() = 2 AND ( Type("tcHesapType") # "C" OR Type("tcMusteriType") # "C")
MessageBox("Parametre Hatası -> SQLMain, Hesap tipi.")
CASE Pcount() = 2 AND ( Type("tcHesapType") = "C" OR Type("tcMusteriType") = "C")
IF tcHesapType = 'Y' && Yeni Tablo oluştur.
DO TbOlustur && Önce tabloları oluştur
DO TbKullan && Sonra tabloları kullan
ENDIF
IF tcHesapType = 'E' && Hazırlanmış tabloları kullan.
DO TbKullan
ENDIF
ENDCASE
DO GridSube
lnStop = Seconds()
WAIT WINDOW " Başlama Zamanı : " + TimeDetail(lnStart) + CHR(13) + ;
" Bitiş Zamanı : " + TimeDetail(lnStop) + CHR(13) + ;
" Süre : " + TimeDetail(lnStop - lnStart) NOWAIT
RETURN
PROCEDURE TbOlustur
IF Pcount() = 0 && Parametre yok, 'O' Özelde farklı tüm firmalar; 'Y'eni data hazırla
lcHesapType = 'Y' && YeniData
lcMusteriType = 'O' && Müşteri
ENDIF
LOCAL ARRAY laMaxSubeNo[1,1]
SELECT Count(Hesno) FROM Sube INTO ARRAY laMaxSubeNo
LOCAL ARRAY laSubeler[laMaxSubeNo,1]
SELECT Hesno FROM Sube INTO ARRAY laSubeler
lcSipAtlCur = "TbAdet.DBF"
lcSipAtlType = "TABLE"
SET TEXTMERGE TO MemVar lcSqlText NOSHOW
SET TEXTMERGE ON
\SELECT ;
\ Sube, ;
\ ModelNo, ;
\ Sum(Adet) As Adet, ;
\ Sum(CikanAdet) As CikanAdet,;
\ Sum(Miktar) As Miktar, ;
\ Sum(CikanMikt) As CikanMikt ;
\FROM ;
\ Adetli;
\ WHERE !Adetli.ModelNo == '' AND ( Adet > 0 OR SATKIME NOT IN(SELECT HesAdi FROM Hesplan WHERE Kod = '<<m.lcMusteriType>>' )) ;
\ GROUP BY Modelno, Sube ;
\ ORDER BY Modelno ;
\ INTO <<m.lcSipAtlType>> <<Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4)>>
\
\ IF File('<<(Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4))+".CDX">>') && CDX File Sil
\ DELETE FILE '<<(Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4))+".CDX">>'
\ ENDIF
\
\Index On ModelNo Tag ModelNo Of <<Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4)>>
\
lcSipAtlCur = "TbSipAtl.DBF"
lcSipAtlType = "TABLE"
\SELECT ;
\ Sipislb.Kod AS ModelNo, ;
\ SUM(Sipislb.adet) AS AtSipAdet, ;
\ SUM(Sipislb.hadet) AS AtHazAdet, ;
\ (SUM(Sipislb.adet) - SUM(Sipislb.hadet)) AS AtKaladet ;
\FROM ;
\ Sipislb ;
\WHERE !(Sipislb.Kod == '') ;
\GROUP BY Sipislb.kod ;
\ORDER BY Sipislb.kod ;
\ INTO <<m.lcSipAtlType>> <<Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4)>>
\
\ IF File('<<(Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4))+".CDX">>') && CDX File Sil
\ DELETE FILE '<<(Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4))+".CDX">>'
\ ENDIF
\
\Index On ModelNo Tag ModelNo Of <<Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4)>>
\
lcSipAtlCur = "TbSipMus.DBF"
lcSipAtlType = "TABLE"
\SELECT ;
\ Sipisl.Kod AS ModelNo, ;
\ SUM(Sipisl.adet) AS MuSipAdet, ;
\ SUM(Sipisl.hadet) AS MuHazAdet, ;
\ (SUM(Sipisl.adet) - SUM(Sipisl.hadet)) AS MuKaladet ;
\FROM ;
\ Sipisl ;
\WHERE !( Kod == '') ;
\GROUP BY Sipisl.kod ;
\ORDER BY Sipisl.kod ;
\ INTO <<m.lcSipAtlType>> <<Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4)>>
\
\ IF File('<<(Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4))+".CDX">>') && CDX File Sil
\ DELETE FILE '<<(Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4))+".CDX">>'
\ ENDIF
\
\Index On ModelNo Tag ModelNo Of <<Substr(m.lcSipAtlCur,1,Len(m.lcSipAtlCur)-4)>>
\
*!* Bolum = U_PirModel -> SADE, Monte vs.
*!* Aktifmi = U_PirDevam -> Dinleniyor, Bloke, Çalışılmıyor vs.
\SELECT ;
\ Amodel.Kod AS ModelNo, ;
\ Substr(Amodel.OzKod1,1,10) AS Fabrika, ;
\ Substr(Amodel.OzKod2,1,17) AS TakimNo, ;
\ Substr(Amodel.OzKod3,1,15) AS TakimGrup, ;
\ Cast(Nvl(Amodel.KrAdet,0) As Int) AS TakimAdet, ;
\ Cast(0 As Int) AS TakAdetEl, ;
\ Space(10) AS TakGrupEl, ;
\ Amodel.Kapi1 AS Marka, ;
\ Amodel.Kapi2 AS MarkaNot, ;
\ Substr(Amodel.Kapi3,1,10) AS Bolum, ;
\ Substr(Amodel.Kapi4,1,10) AS Aktifmi, ;
\ Amodel.miktar AS Miktar, ;
\ Amodel.Cikisc AS Cikisc, ;
\ Amodel.IscBirim AS IscBirim, ;
\ Amodel.Turkod AS Turkod, ;
\ Amodel.Adttur AS Adttur, ;
\ Amodel.Cinkod AS Cinkod, ;
\ Amodel.SonTarih AS SonTarih, ;
\ Amodel.OzKod5 AS Orjin, ;
\ Amodel.Hesno AS Uretici, ;
\ Cast(Nvl(TbSipAtl.AtSipAdet,0) As Int) AS AtSipAdet,;
\ Cast(Nvl(TbSipAtl.AtHazAdet,0) As Int) AS AtHazAdet, ;
\ Cast(Nvl(TbSipAtl.AtKalAdet,0) As Int) AS AtKalAdet, ;
\ Cast(Nvl(TbSipMus.MuSipAdet,0) As Int) AS MuSipAdet, ;
\ Cast(Nvl(TbSipMus.MuHazAdet,0) As Int) AS MuHazAdet, ;
\ Cast(Nvl(TbSipMus.MuKalAdet,0) As Int) AS MuKalAdet, ;
\ Cast(0 As INT) As TopAdet, ;
\ Cast(0 As INT) As TopStAdet, ;
\ Cast(0 As B) As TopMik, ;
\ Cast(0 As B) As TopStMik, ;
FOR lni = 0 TO laMaxSubeNo[1,1] && Üstad buraya dimi ?!
IF lni # 0
lcTempMyDeg = Padl(Alltrim(Str(laSubeler[lni],1)),2,"0")
ELSE
lcTempMyDeg = Padl(Alltrim(Str(lni,1)),2,"0")
ENDIF
\ Cast(Nvl(Crs<<m.lcTempMyDeg>>.Adet,0) As Int) As Sb<<m.lcTempMyDeg>>Adet, ;
\ Cast(Nvl(Crs<<m.lcTempMyDeg>>.CikanAdet,0) As Int) As Sb<<m.lcTempMyDeg>>StAdet, ;
\ Cast(Nvl(Crs<<m.lcTempMyDeg>>.Miktar,0.000) As Currency) As Sb<<m.lcTempMyDeg>>Mik, ;
\ Cast(Nvl(Crs<<m.lcTempMyDeg>>.CikanMikt,0.000) As Currency) As Sb<<m.lcTempMyDeg>>StMik, ;
ENDFOR
\ Cast(0 AS Int) AS TempFlag ;
\ FROM ;
\ Amodel ;
\ LEFT JOIN TbSipAtl ON Amodel.kod = TbSipAtl.ModelNo ;
\ LEFT JOIN TbSipMus ON Amodel.kod = TbSipMus.ModelNo ;
**
FOR lni = 0 TO laMaxSubeNo[1,1] && Bu kadar mı?! ?ok
IF lni # 0
lcTempMyDeg = Padl(Alltrim(Str(laSubeler[lni],1)),2,"0")
ELSE
lcTempMyDeg = Padl(Alltrim(Str(lni,1)),2,"0")
ENDIF
\ LEFT JOIN (Select Modelno, Adet, CikanAdet, Miktar, CikanMikt ;
\ From tbAdet ;
\ Where Sube = <<IIF(m.lni > 0, laSubeler[m.lni],0)>>) Crs<<m.lcTempMyDeg>> ;
\ ON Amodel.Kod == Crs<<m.lcTempMyDeg>>.ModelNo ;
ENDFOR
\ WHERE !(Amodel.Kod == '') ;
\ ORDER BY Amodel.kod ;
\ INTO Table TbAmodel
\
\ IF File('TbAmodel.Cdx') && CDX File Sil
\ DELETE FILE 'TbAmodel.Cdx'
\ ENDIF
\
*!* Alt Kısım Kodun kısaltılmış halidir. Çetin Başöz uyarı
\ Update TbAmodel ;
\ SET ;
\ TopAdet =
FOR lni = 0 TO laMaxSubeNo[1,1]
IF lni # 0
lcTempMyDeg = Padl(Alltrim(Str(laSubeler[lni],1)),2,"0")
ELSE
lcTempMyDeg = Padl(Alltrim(Str(lni,1)),2,"0")
ENDIF
\\ Sb<<m.lcTempMyDeg>>Adet
IF lni # laMaxSubeNo[1,1]
\\ +
ELSE
\\, ;
ENDIF
ENDFOR
\ TopStAdet =
FOR lni = 0 TO laMaxSubeNo[1,1]
IF lni # 0
lcTempMyDeg = Padl(Alltrim(Str(laSubeler[lni],1)),2,"0")
ELSE
lcTempMyDeg = Padl(Alltrim(Str(lni,1)),2,"0")
ENDIF
\\ Sb<<m.lcTempMyDeg>>StAdet
IF lni # laMaxSubeNo[1,1]
\\ +
ELSE
\\, ;
ENDIF
ENDFOR
\ TopMik =
FOR lni = 0 TO laMaxSubeNo[1,1]
IF lni # 0
lcTempMyDeg = Padl(Alltrim(Str(laSubeler[lni],1)),2,"0")
ELSE
lcTempMyDeg = Padl(Alltrim(Str(lni,1)),2,"0")
ENDIF
\\ Sb<<m.lcTempMyDeg>>Mik
IF lni # laMaxSubeNo[1,1]
\\ +
ELSE
\\, ;
ENDIF
ENDFOR
\ TopStMik =
FOR lni = 0 TO laMaxSubeNo[1,1]
IF lni # 0
lcTempMyDeg = Padl(Alltrim(Str(laSubeler[lni],1)),2,"0")
ELSE
lcTempMyDeg = Padl(Alltrim(Str(lni,1)),2,"0")
ENDIF
\\ Sb<<m.lcTempMyDeg>>StMik
IF lni # laMaxSubeNo[1,1]
\\ +
ELSE
\\
ENDIF
ENDFOR
\
\Index On ModelNo Tag ModelNo Of TbAmodel
\
SET TEXTMERGE TO
SET TEXTMERGE OFF
_ClipText = m.lcSqlText
Execscript(m.lcSqlText)
=CloseNonSelectedFiles("Tb",Set("Datasession"))
ENDPROC
PROCEDURE TbKullan
SELECT *, (Addbs(ogU.PathResimSadeAdet)+Alltrim(ModelNo)+".JPG") As EkResim ;
FROM TbAmodel ;
Order By ModelNo ;
INTO CURSOR CrsTbAmodel READWRITE
INDEX On ModelNo TO Sys(2015)
ENDPROC
PROCEDURE GridSube
CREATE CURSOR CrsGridSube ;
( SiraNo Int AutoInc, ;
SubeNo INT, ;
SubeAdi C(25), ;
Durum C(10), ;
DurumType N(1), ;
Adet01 INT, ;
Adet02 INT, ;
Esit0Flag L, ;
Farkli0Flag L, ;
SiraNo2 N(1), ;
RealFlag L)
INDEX On (Padl(Alltrim(Str(SubeNo)),8,"0") + Padl(Alltrim(Str(SiraNo)),8,"0") + Padl(Alltrim(Str(DurumType)),1,"0")) TAG SiraNo OF GridSube
INSERT INTO CrsGridSube (SubeNo, Durum, DurumType, SubeAdi,Farkli0Flag,Esit0Flag, RealFlag, SiraNo2) VALUES (0,IIF(Ogu.LangID == "TRK","Stokta","In Stock"), 0, IIF(Ogu.LangID == "TRK","Tüm Şubeler Adet","All Branches - Qtty"),.F.,.F.,.F.,0)
INSERT INTO CrsGridSube (SubeNo, Durum, DurumType, SubeAdi,Farkli0Flag,Esit0Flag, RealFlag, SiraNo2) VALUES (0,IIF(Ogu.LangID == "TRK","Satılan","Sold"),1, IIF(Ogu.LangID == "TRK","Tüm Şubeler Adet","All Branches - Qtty"),.F.,.F.,.F.,1)
INSERT INTO CrsGridSube (SubeNo, Durum, DurumType, SubeAdi,Farkli0Flag,Esit0Flag, RealFlag, SiraNo2) VALUES (0,IIF(Ogu.LangID == "TRK","Stokta","In Stock"), 0, IIF(Ogu.LangID == "TRK","Merkez Şube Adet","Head Office - Qtty"),.F.,.F.,.T.,0)
INSERT INTO CrsGridSube (SubeNo, Durum, DurumType, SubeAdi,Farkli0Flag,Esit0Flag, RealFlag, SiraNo2) VALUES (0,IIF(Ogu.LangID == "TRK","Satılan","Sold"), 1, IIF(Ogu.LangID == "TRK","Merkez Şube Adet","Head Office - Qtty"),.F.,.F.,.T.,1)
INSERT INTO CrsGridSube (SubeNo, Durum, DurumType, SubeAdi,Farkli0Flag,Esit0Flag, RealFlag, SiraNo2) Select Hesno ,IIF(Ogu.LangID == "TRK","Stokta","In Stock"), 0, HesAdi,.F.,.F.,.T.,0 FROM Sube
INSERT INTO CrsGridSube (SubeNo, Durum, DurumType, SubeAdi,Farkli0Flag,Esit0Flag, RealFlag, SiraNo2) Select Hesno ,IIF(Ogu.LangID == "TRK","Satılan","Sold"), 1, HesAdi,.F.,.F.,.T.,1 FROM Sube
GO TOP IN CrsGridSube
ENDPROC |