1

Konu: SQL bağlantısı yok ise ?

m.lhandle=SQLSTRINGCONNECT('connection string')
ile bağlantıyı sağlamaya çalışıyoruz.

Ancak herhangi bir neden ile (bağlantı koptu, kablo takılı değil, server durmuş, yetki yok) bağlantı olmazsa
1. önce SQL promptu geliyor: MS Server Login / Connection failed / detaylar ....
2. Daha sonra (ve daha kötüsü)  VFP promptu geliyor:
VFP SQL Server / Login Id  ve Password (kaç haneli ise o kadar x li)

bu ikisini (ÖZELLİKLE 2. sini) direk nasıl atlatabilirim ve direk kendim programı sonlandırabilirim ? (örneğin aşağıdaki gibi)
çünkü login id ve password denemelerine olanak sağlamak istemiyorum ....
IF m.lhandle<0
  =MESSAGEBOX("bağlantı yok",16,"sistem yöneticisine haber verin")
  CLEAR EVENTS
ENDIF

VFP9 SP2

2

Re: SQL bağlantısı yok ise ?

daha önce bende sormuştum ve soruma güzel yanıtlar geldi ve şuan o yanıtlarla çok güzel bir prg hazırladım. istersen bir incele bağlantı olmadığında hiç bir işlem yapmadan senin bilgi vererek çıkmana yardımcı olur. ancak bağlantıyı kontrol için ilk bağlantıda ping dene en hızlısı bu gene bu verdiğim linkte göreceksin wink


http://www.fox4um.com/topic/1666/sql-se … out-ayari/

3

Re: SQL bağlantısı yok ise ?

ben internet üstünden değil,
LAN olarak SQLSTRINGCONNECT() komutu sonrası kendiliğinden çıkan
UYARI PROMPLARINI nasıl atlarım diye sordum.

?SQLSETPROP(nhandle, "DispWarnings" ,.t.)
aradığım komut olabilir ama gene handle istediği için o satıra promptsuz gelemiyorum.


yoksa o topici iyice takip etmiştim.

Son düzenleyen, konuka (26.07.2010 13:38:01)

VFP9 SP2

4

Re: SQL bağlantısı yok ise ?

SQLSETPROP(0,"DispLogin",3)

5

Re: SQL bağlantısı yok ise ?

Visual Fox Pro
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
Local loForm, lcConnStr

loForm = Createobject('frmLogin')
loForm.Show()
lcConnStr = loForm.Tag
loForm.Release
Release loForm
? Iif(Empty(lcConnStr),'Failed to login',lcConnStr)
Return lcConnStr
 
Define Class frmLogin As Form
  Height = 186
  Width = 216
  BorderStyle = 2
  Caption = "SQL Server Login"
  ControlBox = .F.
  WindowType = 1
  ntries = 0
  maxtries = 5
 
  Add Object label1 As Label With ;
    Caption = "User ID", Left = 24, Top = 47, Width = 48
 
  Add Object label2 As Label With ;
    Caption = "Password", Left = 24, Top = 78, Width = 60
 
  Add Object txtuid As TextBox With ;
    Height = 23, Left = 96, Top = 44, Width = 100
 
  Add Object txtpwd As TextBox With ;
    Height = 23, Left = 96, Top = 75, Width = 100, PasswordChar = "*"
 
  Add Object label3 As Label With ;
    Caption = "Server", Height = 17, Left = 24, Top = 14, Width = 40
 
  Add Object txtserver As TextBox With ;
    Height = 23, Left = 96, TabIndex = 2, Top = 11, Width = 100
 
  Add Object label4 As Label With ;
    Caption = "Database", Height = 17, Left = 24, Top = 104, Width = 60
 
  Add Object txtdatabase As TextBox With ;
    Height = 23, Left = 96, Top = 104, Width = 100
 
  Add Object command1 As CommandButton With ;
    Top = 144, Left = 111, Height = 27, Width = 84, Caption = "Connect"
 
  Procedure Unload
    Return This.Tag
  Endproc
 
  Procedure command1.Click
    Local lnHandle, lcServerInstance, lcUID, lcPWD, lcConnStr, lcDatabase
    Local Array aCheck[1]
 
    SQLSetprop(0,"DispLogin",3)
    SQLSetprop(0,"DispWarnings",.F.)
 
    With Thisform
      lcServerInstance = Trim(.txtserver.Value)
      lcUID = Trim(.txtuid.Value)
      lcPWD = Trim(.txtpwd.Value)
      lcDatabase = Trim(.txtdatabase.Value)
 
      If (Empty(lcServerInstance) Or Empty(lcUID) Or Empty(lcPWD))
        If Messagebox('You must specify server, user and password to login.', ;
            5+16,'SQL server login') = 2 && Responded cancel
          .Hide && User cancelled
        Endif
        Return
      Endif
 
      lcConnStr = 'DRIVER={SQL Native Client};SERVER=' + m.lcServerInstance + ;
        ';UID='+m.lcUID+';PWD='+m.lcPWD+;
        ';Database='+m.lcDatabase+;
        ';Trusted_connection=No;'
 
      lnHandle=Sqlstringconnect(m.lcConnStr)
      .ntries = .ntries + 1 && Increase try count
      If ( lnHandle > 0 ) && Got the handle - return
        SQLDisconnect(lnHandle)
        .Tag = lcConnStr && Save connection string to tag
        .Hide
      Else
        If .ntries = .maxtries
          Messagebox('Login failed ! Sorry, no more retries.',16,'SQL server login')
          .Hide
        Else
          Aerror(aCheck)
          *For simplicity using 2nd array element as error info
          If Messagebox(aCheck[2],5+16,'SQL server login') = 2 && Responded cancel
            .Hide
          Endif
        Endif
      Endif
    Endwith
  Endproc
Enddefine
Yen yaz 1907'ye yolla FB gelsin evinde yensin.
(sonra salaklar ciksin alin terine şike desin)

6

Re: SQL bağlantısı yok ise ?

yanıtlar için çok teşekkür ederim, helpte 0 ı atlamışım
If you specify 0 for nStatementHandle, SQLGETPROP( ) returns the environment setting
aradıklarım:
SQLSetprop(0,"DispLogin",3)
SQLSetprop(0,"DispWarnings",.F.)

Çetin,
kodu örneklemek için copy paste mı yaptın, yoksa başka bir şey mi kaçırıyorum ?
sevgiler

Son düzenleyen, konuka (26.07.2010 14:30:38)

VFP9 SP2

7

Re: SQL bağlantısı yok ise ?

Benim ornek kodlarimdan birisiydi, sadece o iki satiri vermek yerine calisan ornek vermek istedim:)

Yen yaz 1907'ye yolla FB gelsin evinde yensin.
(sonra salaklar ciksin alin terine şike desin)

8

Re: SQL bağlantısı yok ise ?

Bu arada, aslinda ben VFP + SQL server kullaniyorsaniz ODBC yerine OLEDB kullanin dusuncesindeyim. Bazi yeni data tiplerini kullanamiyorsunuz yoksa. OLEDB ile baglantida, ADODb.Connection'in State propertysine bakiyorsunuz baglandi mi diye (uyari mesajlari zaten yok).

Yen yaz 1907'ye yolla FB gelsin evinde yensin.
(sonra salaklar ciksin alin terine şike desin)

9

Re: SQL bağlantısı yok ise ?

ben cursor adapter ve sqlexec kullanıyorum. bunlarda ado ile bağlantı nasıl yapılıyor? sadece sqlstringconnect komutunda mı değişiklik var? yoksa başka şeylerde de mi? yoksa bir nesne ile mi bağlanılıyor tamamen farklı bir şekilde? bir de vfp içinden dataset nesnesi nasıl kullanılır?

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

10

Re: SQL bağlantısı yok ise ?

Metin ile benzer sorular,
kendime becermek için daha fazlaişkence etmiyeceğim:
ODBC olarak:

Visual Fox Pro
1

2
3
4
lnh=SQLSTRINGCONNECT("stringim")

SQLEXEC(lnh,"SELECT * FROM veritabani..tablo","cursorum")
BROW
SQLDISCONNECT(0)


komutu (sonucu) OLEDB ile bir türlü yapamadım - ltf eşdeğer kodu yazabilirmisiniz ?
'Provider=SQLNCLI10; Server=KONUKPC\SQLEXPRESS; Database=ürt; Trusted_Connection=yes;' ile her şeyi denedim ...

VFP9 SP2

11

Re: SQL bağlantısı yok ise ?

Sadece SQLStringConnect() degisiyor demek pek dogru olmaz. Simdilik cok hizli sekilde ADO ile "calisan" kod yazma ornegi kaydettim:

http://screencast.com/t/MDMxMjIz

Gercekte ben uygulamalarimda orada gosterdigimi degil kendi classlarimi kullaniyorum. Benim icin bir tablo islemi:

Visual Fox Pro
1

2
3
4
local loCustomers

loCustomers = SQLOpenTable("Customers")
* Sanki use Customers yapmisim gibi ne yapacaksam o
TableUpdate(2,.t.,'Customers') && Eger degisiklik varsa

seklinde basit. Ya da:

Visual Fox Pro
1

2
3
4
5
6
text to lcSQL noshow

select ...
where customerID = ? and ...
...
endtext
SQLQueryInto(m.lcSQL,'cursorMusteriler', 'ALFKI', parametre2, paremetre3 ....)

Visual Fox Pro
1

SQLInsert( 'Customers', 'customerID, companyName, contactName', 'XXXX', 'X Sirketi', 'x y')

Visual Fox Pro
1

SQLNonQuery('update customers set company = ? where customerID = ?', 'Y Sirketi', 'XXXX')

gibi kolaylik saglayan ufak kodlarim var. Bunlari hatirlarsaniz Istanbul toplantisinda vermistim. Son halleri olmasalar da calisiyorlar.

Yen yaz 1907'ye yolla FB gelsin evinde yensin.
(sonra salaklar ciksin alin terine şike desin)

12

Re: SQL bağlantısı yok ise ?

çok teşekkür ederim.
foolproof dedikleri bu olsa gerek :}

VFP9 SP2