<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Fox4um - SQL --> dbf dbf --> SQL data taşıma]]></title>
	<link rel="self" href="http://www.fox4um.com/feed/atom/topic/1234/"/>
	<updated>2009-03-21T06:21:41Z</updated>
	<generator>PunBB</generator>
	<id>http://www.fox4um.com/topic/1234/sql-dbf-dbf-sql-data-tasima/</id>
		<entry>
			<title type="html"><![CDATA[SQL --> dbf dbf --> SQL data taşıma]]></title>
			<link rel="alternate" href="http://www.fox4um.com/post/7465/#p7465"/>
			<content type="html"><![CDATA[<p>SQL datayı işteki serverden eve götürmek için notebooka alırken aşağıdaki kodları yazdım.
<br />Mantığı temelde aynı table isimlerini kullanarak SQL datayı dbf&#039;e ve de dbf datayı SQL&#039;e yüklüyor.
<br />Belki işe yarar diye paylaşıyorum. Kodlar ham, (bölümler ayrı ayrı da olmak üzere) çalışıyor, maksada uygun geliştirilebilinir.
</p><p>Tabi ki Çetin&#039;den 3-5 satırlık başkaca uzman çözümler gelmezse !&nbsp; <img src="http://www.fox4um.com/img/smilies/smile.png" width="15" height="15" alt="smile" />
</p><div class="codebox"><div class="head">Visual Fox Pro</div><table class="visualfoxpro fxcode"><tbody><tr class="li1"><td class="ln"><pre class="de1">1
<br />2
<br />3
<br />4
<br />5
<br />6
<br />7
<br />8
<br />9
<br />10
<br />11
<br />12
<br />13
<br />14
<br />15
<br />16
<br />17
<br />18
<br />19
<br />20
<br />21
<br />22
<br />23
<br />24
<br />25
<br />26
<br />27
<br />28
<br />29
<br />30
<br />31
<br />32
<br />33
<br />34
<br />35
<br />36
<br />37
<br />38
<br />39
<br />40
<br />41
<br />42
<br />43
<br />44
<br />45
<br />46
<br />47
<br />48
<br />49
<br />50
<br />51
<br />52
<br />53
<br />54
<br />55
<br />56
<br />57
<br />58
<br />59
<br />60
<br />61
<br />62
<br />63
<br />64
<br />65
<br />66
<br />67
<br />68
<br />69
<br />70
<br />71
<br />72
<br />73
<br />74
<br />75
<br />76
<br />77
<br />78
<br />79
<br />80
<br />81
<br />82
<br />83
<br />84
<br />85
<br /></pre></td><td class="de1"><pre class="de1"><span class="sy0">***</span> handle alma ve <span class="kw2">dbf</span>'leri saklayacağı<span class="kw2">n</span> alan belirleme
<br />lnHserver<span class="sy0">=</span>SQLSTRIGCONNECT<span class="br0">&#40;</span>'<span class="kw2">Driver</span><span class="sy0">=</span><span class="br0">&#123;</span><span class="kw3">SQL</span> Server <span class="kw2">Native</span> Client <span class="nu0">10.0</span><span class="br0">&#125;</span><span class="sy0">;</span> Server<span class="sy0">=</span>ML350\SQLEXPRESS<span class="sy0">;</span> <span class="kw3">Database</span><span class="sy0">=</span>nkt<span class="sy0">;</span> uid<span class="sy0">=</span>sa<span class="sy0">;</span> pwd<span class="sy0">=</span>xx'<span class="br0">&#41;</span>
<br />&nbsp;
<br />lnHlokal<span class="sy0">=</span>SQLSTRIGCONNECT<span class="br0">&#40;</span>'<span class="kw2">Driver</span><span class="sy0">=</span><span class="br0">&#123;</span><span class="kw3">SQL</span> Server <span class="kw2">Native</span> Client <span class="nu0">10.0</span><span class="br0">&#125;</span><span class="sy0">;</span>'<span class="sy0">+;</span>
<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'Server<span class="sy0">=</span>KONUKPC\SQLEXPRESS<span class="sy0">;</span>Database<span class="sy0">=</span>nkt<span class="sy0">;</span>Trusted_Connection<span class="sy0">=</span>yes<span class="sy0">;</span>' <span class="br0">&#41;</span>
<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&amp;&amp;</span> <span class="kw3">database</span> i belirtmek iyi oluyor <span class="sy0">-</span> bendeki nkt<span class="sy0">,</span> 
<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&amp;&amp;</span> yanlışlıkla bü<span class="kw3">t</span>ü<span class="kw2">n</span> SQLserverdeki <span class="kw3">database</span> ile işlem yapılması<span class="kw2">n</span> 
<br />#DEFI DBF_SAKLAMA_YERI <span class="st0">&quot;c:<span class="es0">\g</span>ecici<span class="es0">\&quot;</span> &amp;&amp; veya dilenen dizin <span class="es0">\o</span>lmazsa kodda ADDBS() kullanılabilinir</span>
<br /><span class="st0">IF ! DIRECTORY(DBF_SAKLAMA_YERI)</span>
<br /><span class="st0"> &nbsp;MD(DBF_SAKLAMA_YERI)</span>
<br /><span class="st0">ENDIF</span>
<br />&nbsp;
<br /><span class="st0">*** kopyalama bölümü</span>
<br /><span class="st0">* #DEFI DBF_SAKLAMA_YERI &quot;</span>c<span class="sy0">:</span>\gecici\<span class="st0">&quot;</span>
<br /><span class="st0">SQLTABLES(m.lnHserver,'TABLE','curtable')</span>
<br /><span class="st0">SCAN</span>
<br /><span class="st0"> &nbsp;m.Xkomut=&quot;</span><span class="kw2">select</span> <span class="sy0">*</span> <span class="kw2">from</span> <span class="st0">&quot;+ALLTRIM(curtable.table_cat)+&quot;</span><span class="sy0">..</span><span class="st0">&quot;+ALLTRIM(curtable.table_name)</span>
<br /><span class="st0"> &nbsp;m.Xdbf=DBF_SAKLAMA_YERI+ALLTRIM(table_name)+&quot;</span><span class="sy0">.</span><span class="kw2">dbf</span><span class="st0">&quot;</span>
<br /><span class="st0"> &nbsp;WAIT WINDOW m.Xdbf NOWAIT NOCLEAR</span>
<br /><span class="st0"> &nbsp;SQLEXEC(m.lnHserver,m.Xkomut,&quot;</span>xcur<span class="st0">&quot;)</span>
<br /><span class="st0"> &nbsp;SELECT * FROM xcur INTO DBF (m.Xdbf)</span>
<br /><span class="st0"> &nbsp;SELECT curtable</span>
<br /><span class="st0">ENDSCAN</span>
<br /><span class="st0">WAIT CLEAR</span>
<br />&nbsp;
<br /><span class="st0">*** silme bölümü (lokalde eski datayı) primer indexler için iyi oluyor</span>
<br /><span class="st0">SQLTABLES(m.lnHlokal,'TABLE','curtable')</span>
<br /><span class="st0">BROWSE &nbsp;&amp;&amp; neler SİLİNECEĞİNİ gözden geçirme -esc ile devam</span>
<br /><span class="st0">SCAN</span>
<br /><span class="st0"> &nbsp; &nbsp;m.Xkomut=&quot;</span><span class="kw3">delete</span> <span class="kw2">from</span> <span class="st0">&quot;+ALLTRIM(curtable.table_cat)+&quot;</span><span class="sy0">..</span><span class="st0">&quot;+ALLTRIM(curtable.table_name)</span>
<br /><span class="st0"> &nbsp; &nbsp;m.Xdbf=DBF_SAKLAMA_YERI+ALLTRIM(table_name)+&quot;</span><span class="sy0">.</span><span class="kw2">dbf</span><span class="st0">&quot;</span>
<br /><span class="st0"> &nbsp; &nbsp;IF FILE(m.Xdbf) AND 6=MESSAGEBOX(m.Xdbf,292,&quot;</span><span class="kw3">SQL</span> dosyalar silinsin mi<span class="st0">&quot;)</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp;IF 1&gt;SQLEXEC(m.lnHlokal,m.Xkomut)</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;DO hata</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp;ENDIF</span>
<br /><span class="st0"> &nbsp; &nbsp;ENDI</span>
<br /><span class="st0"> &nbsp; &nbsp;SELECT curtable</span>
<br /><span class="st0">ENDSCAN</span>
<br />&nbsp;
<br /><span class="st0">***SQL'e yazma bölümü</span>
<br /><span class="st0">CLOSE DATABASES</span>
<br /><span class="st0">SQLTABLES(m.lnHlokal,'TABLE','curtable')</span>
<br /><span class="st0">BROWSE &nbsp;&amp;&amp; neler yazılacağını gözden geçirme -esc ile devam</span>
<br />&nbsp;
<br /><span class="st0">SCAN</span>
<br /><span class="st0"> &nbsp;m.Xdbf=DBF_SAKLAMA_YERI+ALLTRIM(table_name)+&quot;</span><span class="sy0">.</span><span class="kw2">dbf</span><span class="st0">&quot;</span>
<br /><span class="st0"> &nbsp;IF FILE(m.Xdbf) AND 6=MESSAGEBOX(m.Xdbf,292,&quot;</span><span class="kw3">SQL</span> dosyalar eklensin mi<span class="st0">&quot;)</span>
<br /><span class="st0"> &nbsp; &nbsp;SELECT 0</span>
<br /><span class="st0"> &nbsp; &nbsp;USE (m.Xdbf) AGAIN &nbsp;&amp;&amp; ne olur ne olmaz</span>
<br /><span class="st0"> &nbsp; &nbsp;m.Xkomut=&quot;</span><span class="kw1">insert</span> <span class="kw2">into</span> <span class="st0">&quot;+ALLTRIM(curtable.table_cat)+&quot;</span><span class="sy0">..</span><span class="st0">&quot;+ALLTRIM(curtable.table_name)+&quot;</span> <span class="kw3">values</span> <span class="br0">&#40;</span><span class="sy0">?</span>arrayx<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="st0">&quot;</span>
<br /><span class="st0"> &nbsp; &nbsp;FOR m.Xi=2 TO FCOUNT(JUSTSTEM(m.Xdbf))</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp;m.Xkomut=m.Xkomut+&quot;</span><span class="sy0">,</span> <span class="sy0">?</span>arrayx<span class="br0">&#91;</span><span class="st0">&quot;+ALLTRIM(STR(m.Xi))+&quot;</span><span class="br0">&#93;</span><span class="st0">&quot;</span>
<br /><span class="st0"> &nbsp; &nbsp;ENDF</span>
<br /><span class="st0"> &nbsp; &nbsp;m.Xkomut=m.Xkomut+&quot;</span><span class="br0">&#41;</span><span class="st0">&quot;</span>
<br /><span class="st0"> &nbsp; &nbsp;DIMENSION arrayx(FCOUNT(JUSTSTEM(m.Xdbf))) &nbsp;&amp;&amp; bunu yapmazsan bir sonraki fcount() küçükse hata oluşuyor</span>
<br /><span class="st0"> &nbsp; &nbsp;SCAN</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp;SCATTER MEMO TO arrayx</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp;IF 1&gt;SQLEXEC(m.lnHlokal,m.Xkomut)</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;DO hata</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;IF 6=MESSAGEBOX(&quot;</span>kayı<span class="kw3">t</span> olmadı<span class="st0">&quot;,292,&quot;</span>işlem sonlandırılsı<span class="kw2">n</span> mı <span class="sy0">?</span><span class="st0">&quot;)</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RETURN</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp; &nbsp;ENDIF</span>
<br /><span class="st0"> &nbsp; &nbsp; &nbsp;ENDIF</span>
<br /><span class="st0"> &nbsp; &nbsp;ENDSCAN</span>
<br /><span class="st0"> &nbsp;USE</span>
<br /><span class="st0"> &nbsp;ENDIF</span>
<br /><span class="st0">SELECT curtable</span>
<br /><span class="st0">ENDSCAN</span>
<br />&nbsp;
<br /><span class="st0">*** bitti</span>
<br /><span class="st0">SQLDISCONNECT(0)</span>
<br /><span class="st0">CLOSE DATABASES</span>
<br />&nbsp;
<br /><span class="st0">*** hata</span>
<br /><span class="st0">RETURN</span>
<br /><span class="st0">PROCEDURE hata &nbsp;&amp;&amp; SQL komut hatalarını belirleme için &nbsp;(UTden almıştım)</span>
<br /><span class="st0">LOCAL Array aHata[1]</span>
<br /><span class="st0">LOCAL ix,lcHata</span>
<br /><span class="st0">Aerror(aHata)</span>
<br /><span class="st0">lcHata = ''</span>
<br /><span class="st0">FOR ix = 1 TO 7</span>
<br /><span class="st0"> &nbsp;lcHata = m.lcHata + Transform(aHata[m.ix]) + Chr(13)</span>
<br /><span class="st0">Endfor</span>
<br /><span class="st0">Messagebox(m.lcHata)</span>
<br /><span class="st0">RETURN</span></pre></td></tr></tbody></table></div>]]></content>
			<author>
				<name><![CDATA[konuka]]></name>
				<uri>http://www.fox4um.com/user/146/</uri>
			</author>
			<updated>2009-03-21T06:21:41Z</updated>
			<id>http://www.fox4um.com/post/7465/#p7465</id>
		</entry>
</feed>

