Bu functiondaki hatayı nasıl düzeltirim?

Morgengabe
09-06-2009, 13:10   |  #1  
OP Üye
Teşekkür Sayısı: 0
76 mesaj
Kayıt Tarihi:Kayıt: Mar 2004

 

Module Fonksiyon
    Dim bsMuessese As BindingSource
    Dim datasetPersonel As DataSet

    Public Function MuesseseAdi(ByVal Numara As Byte)

        bsMuessese = New BindingSource()
        datasetPersonel = New dsPersonel()

        bsMuessese.DataSource = datasetPersonel
        bsMuessese.DataMember = "Muessese"

        bsMuessese.Filter = "ID= " & CByte(Numara)

        Return (bsMuessese(0))

    End Function

End Module

Kodlar böyle. Çalıştırdığım zaman;

Return (bsMuessese(0))

satırını işaretliyor ve

Dizin 0 negatif veya satır sayısının üzerinde.

hatası veriyor. Yine önceki sorularımdaki örneği vereyim.

dsPersonel isminde bir datasetim var.
Muessese isimli bir tablom var. Alanları;
ID (Byte)
MueAdi (String)

Yukarıdaki fonksiyona ID değerini gönderince MueAdi değerinin dönmesini istiyorum.

Saygılarımla...

OnlyMann
09-06-2009, 13:16   |  #2  
OnlyMann avatarı
Yıllanmış Üye
Teşekkür Sayısı: 5
2,779 mesaj
Kayıt Tarihi:Kayıt: Şub 2009

http://msdn.microsoft.com/en-us/library/59bz1f0h(VS.71).aspx adresini inceleyiniz yardımcı olabilir.

ayrıca fonk için veri gönderiliyor ama dönen değer ve tipi belirtilmemiş!!!

Morgengabe
09-06-2009, 14:14   |  #3  
OP Üye
Teşekkür Sayısı: 0
76 mesaj
Kayıt Tarihi:Kayıt: Mar 2004

Olmuyor.

Public Function MuesseseAdi(ByVal Numara As Byte) As String

yazsam da aynı hatayı veriyor. Ben bu kodu;

Dim bsMuessese As BindingSource

bsMuessese = New BindingSource()

        bsMuessese.DataSource = DsPersonel
        bsMuessese.DataMember = "Muessese"

        bsMuessese.Filter = "ID= " + frmBilgiBankasi.MueIDTextBox.Text

        frmBilgiBankasi.txtMuesseseIsim.DataBindings.Add("Text", bsMuessese, "MueAdi")

şeklinde bir butonun altına yazarsam sıkıntısız çalışıyor ve istediğimi elde ediyorum. Ama projenin her yerinde kullanacağım için function haline getirmek istiyorum.

OnlyMann
09-06-2009, 14:22   |  #4  
OnlyMann avatarı
Yıllanmış Üye
Teşekkür Sayısı: 5
2,779 mesaj
Kayıt Tarihi:Kayıt: Şub 2009

Return (bsMuessese(0))
satırından önce bsMuessese(0) değerini alert olarak görebiliyormusunuz?

Public kaldırıp deneyiniz.

Morgengabe
09-06-2009, 16:00   |  #5  
OP Üye
Teşekkür Sayısı: 0
76 mesaj
Kayıt Tarihi:Kayıt: Mar 2004

Alert olarak görebilmek için nasıl bir kod eklemem gerekiyor bilmiyorum. Kodu şu hale getirdim ama hala değeri nasıl geri döndüreceğimi bilmiyorum.

Module Fonksiyon
    Dim bsMuessese As BindingSource
    Dim datasetPersonel As DataSet
    Dim MetinKutusu As TextBox

    Public Function MuesseseAdi(ByVal Numara As Byte) As String

        bsMuessese = New BindingSource()
        MetinKutusu = New TextBox
        datasetPersonel = New dsPersonel()

        bsMuessese.DataSource = datasetPersonel
        bsMuessese.DataMember = "Muessese"

        bsMuessese.Filter = "ID= " & CByte(Numara)
        MetinKutusu.DataBindings.Add("Text", bsMuessese, "MueAdi")

        Return 0

    End Function

End Module

Bu şekilde hata vermiyor. Tabi benim bu kezde MetinKutusunun DataBindings/Text özelliğini geri döndürmem gerekiyor.

Kısaca bu kodda MueAdi'nı bir şekilde geri döndürmem gerekiyor. İllaki yazdığım şekilde olmasına gerek yok, farklı bir kodu da seve seve kabul ederim...

Morgengabe
10-06-2009, 15:01   |  #6  
OP Üye
Teşekkür Sayısı: 0
76 mesaj
Kayıt Tarihi:Kayıt: Mar 2004

şu şekilde hallettim:

Module Fonkiyon
    Dim vb_baglanti As OleDb.OleDbConnection
    Dim bilgi As OleDb.OleDbDataReader
    Dim vb_komut As OleDb.OleDbCommand

    Sub baglan()

        vb_baglanti = New OleDb.OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; DATA Source=|DataDirectory|\personel.mdb")
        vb_baglanti.Open()

    End Sub

    Function MuesseseAdi(ByVal Numara As Byte) As String
        Dim MuesseseIsmi As String

        Call baglan()

        vb_komut = New OleDb.OleDbCommand("Select MueAdi from Muessese where ID=" & Numara, vb_baglanti)
        bilgi = vb_komut.ExecuteReader()

        Do While bilgi.Read()
            MuesseseIsmi = bilgi.Item("MueAdi")
        Loop

        bilgi = Nothing
        vb_baglanti.Close()

        Return MuesseseIsmi

    End Function

End Module