Bağlantı Kesintisi

Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Aşağıdaki kodlar ile İnterbase veritabanına bağlanabiliyorum.

Fakat ben veri çekmek için bağlantığımda, o an bu tabloya programla bağlı olup çalışan kişinin bağlantısı kesiliyor.

Eğer çözümü var ise bağlantının kesilmemesi için kodlarda nasıl bir değişiklik yapmam gerekir?

Kod:
Sub PDKSBaglanti()
On Error GoTo Son
Dim Baglanti As ADODB.Connection
Dim Kayit1 As ADODB.Recordset
Dim SQLStr, Kaynak As String
'********************************************************
Kaynak = "D:\BARDES\PDKS\DATA\PDKSIB.GDB"
 
SQLStr = "SELECT SICILNO, ADI,SOYADI,DEPARTMANADI"
 
Set Baglanti = CreateObject("ADODB.Connection")
 
    With Baglanti
        .CursorLocation = adUseClient
        .Mode = adModeRead
        .ConnectionString = "DRIVER=Firebird/InterBase(r) driver;USER ID=SYSDBA;PASSWORD=masterkey; CHARSET=NONE; DBNAME=" & Kaynak
        .Open
    End With
 
    If Err = 0 Then
        Set Kayit1 = CreateObject("ADODB.Recordset")
            With Kayit1
                .ActiveConnection = Baglanti
                .CursorLocation = adUseClient
                .CursorType = adOpenStatic
                .LockType = adLockOptimistic
                .Source = SQLStr
                .Open
            End With
'..........
'............
        Else
            MsgBox "Aradığınız Kayıt Bulunamadı.", vbInformation, "Bilgi"
        End If
 
    Else
Son:
    MsgBox "Bağlantı Hatası.Kontrol Ediniz", vbInformation, "Bilgi"
    End If
If (Kayit1.State <> adStateClosed) Then Kayit1.Close
Set Kayit1 = Nothing
If (Baglanti.State <> adStateClosed) Then Baglanti.Close
Set Baglanti = Nothing
End Sub
 
Son düzenleme:

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,284
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Acaba di&#287;er kullan&#305;c&#305; da "SYSDBA" ile mi ba&#287;lan&#305;yor?
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Her kullan&#305;c&#305;n&#305;n programda kendi Username ve &#350;ifresi var.Fakat bu &#351;ifreyi girdiklerinde san&#305;r&#305;m program tabloya ba&#287;lanmak i&#231;in otomatik olarak bu SYSDBA kullanabilir.

A&#231;&#305;kcas&#305; fazla bilgim yok.

Veritaban&#305; &#351;ifresi ile programa girmek i&#231;in kullan&#305;lan kullan&#305;c&#305; ad&#305; ve &#351;ifre aras&#305;nda nas&#305;l bir ba&#287;lant&#305; oldu&#287;unu gerekirse firmadan &#246;&#287;renebilirim.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,284
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Firebird/Interbase'i local olarak kullandığım için bu durumla karşılaşmadım.
Interbase/Firebird programcıları (Delphi) IBDataset gibi bir bağlantı nesnesi kullanırlar.

Program, oto. SYSDBA ile bağlanıyorsa bu acemilik olur. ;) Dahası aynı programı kullanan siz ve diğer kullanıcılarında başına aynı şey gelirdi.(O program ile oturum açılırken)

Eğer öyle değilse, konuyla ilgili şu anda kesin bir fikrim olmamakla birlikte ADO Connection ve Recordset kilit tiplerini değiştirerek denemenizi önerebilirim.

Hatta, ODBC ile diğer makineden bağlantı kurun. Sizin bağlantınız kesilecek mi?
 
Katılım
25 Aralık 2005
Mesajlar
4,160
Excel Vers. ve Dili
MS Office 2010 Pro Türkçe
Sayın ripek,

Bir de şu kodlarla deneyin:

Kod:
Dim con As New ADODB.Connection
con.Open "Driver={Easysoft Interbase ODBC};" _
    & "Database=myinterbaseserver:c:\myinterbasedatabase.gdb;" _
    & "UID=myinterbaseusername;PWD=myinterbaseusername"
Dim rs As New ADODB.Recordset

rs.Open "select column from mytable", con

Do Until rs.EOF
   Debug.Print rs.Fields(0)
   rs.MoveNext
Loop

rs.Closecon.Close
Bir de aşağıdaki link yardımcı oabilir:

http://www.easysoft.com/products/data_access/odbc_interbase_driver/manual/ib7TOC.html

İyi çalışmalar
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
As&#305;l atlad&#305;&#287;&#305;m nokta;

.CursorType = adOpenStatic

sat&#305;r&#305;ndaym&#305;&#351;.

A&#351;a&#287;&#305;daki &#351;eklikde yap&#305;nca gayet uygun oldu.

Set Kayit1 = CreateObject("ADODB.Recordset")
With Kayit1
.ActiveConnection = Baglanti
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = SQLStr
.Open
End With
 
Üst