Visual Studio 2010'da Crystal Report problemi

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Arkadaşlar bir türlü CrystalReport!ta yazdırma yapamıyorum sorunum şu vs2010'a Crystal Report v13 yüklü bir CrystalReport dosyası oluşturuyorum database olarak bir access dosyası kullanıyorum CrystalReport dosyası ayarlarından new connection deyip database dosyasını gösteriyorum ve buradaki tabloları CrystalReport üzerinde uygun şekilde diziyorum ve bunu yazdırdığımda güzel bir şekilde çalışıyor ama databasenin adresi değiştiğinde yazdırmıyor yani database'nin adresi sabit oluyor ve sürekli bu adresten okuyor başka adresten değil bu çok kullanışsız ve işe yaramaz bir yöntem programın nereye kurulacağı nereden çalıştırılacağı belli değilki.ç bunun üzerine databasemi dosyadan değilde projeden yani datasetten seçiyorum ama bu seferde eklediklerim görünmüyor anlamadım bu işten bu konuda bilgisi olan bir arkadaş yardım edebilirmi
 

ostar542

Öğrenci
Katılım
24 Şubat 2007
Mesajlar
11
Reaksiyon puanı
0
Puanları
0
Programın bunduğu klasörün içerisine database ait klasör oluştur örneğin db bu klasörün içerisine database koy sonra database in adresini gösterirken \db\db.mdb yap porgram nerede program onun altında klasörde arayaracaktır. vs kullanmayalı uzun zaman oldu. tamam emin değil ama bir dene istersen. Ya da \db olabilir.
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
dediğini yaptım ama olmadı sonra sadece databaseadı.mdb olarak yazdım çalıştı ama programın klasör adını değiştirince yine databaseyi bulamadı
 

HapS

Müdavim
Müdavim
Katılım
23 Ocak 2008
Mesajlar
3,346
Reaksiyon puanı
63
Puanları
228
canim kardeşim senin evinin sokağını belediye başka bir şehire altyapısıyla beraber taşısa sen evine yine bildiğin yoldan girebilirmisin ? gidemezsin programın direkt database e yazmasın veya aramasın odbc kullan bunuda alışkanlık haline getir böylelikle farklı makinalarda da aynı programı ağ üzerinden çalıştırabilirsin yani sana anlatmak istediğim bakkala adres sorma gps kullan
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
canim kardeşim senin evinin sokağını belediye başka bir şehire altyapısıyla beraber taşısa sen evine yine bildiğin yoldan girebilirmisin ? gidemezsin programın direkt database e yazmasın veya aramasın odbc kullan bunuda alışkanlık haline getir böylelikle farklı makinalarda da aynı programı ağ üzerinden çalıştırabilirsin yani sana anlatmak istediğim bakkala adres sorma gps kullan
Acemi olduğum için kusura bakma herkes birzamanlar acemiydi napek öğrenmeye çalışıyoz işte odbc yöntemini biraz anlatırmısın bu dediğin nasıl oluyor ben hep direkt databaseye yazıyorum bildiğim yol bu senin bahsettiğin konuda aşağıdaki kodu buldum bu benim bildiğim access bağlantısına çok benziyor

Kod:
Imports System.Data.Odbc
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim connetionString As String
        Dim cnn As OdbcConnection
        connetionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=yourdatabasename.mdb;"
        cnn = New OdbcConnection(connetionString)
        Try
            cnn.Open()
            MsgBox("Connection Open ! ")
            cnn.Close()
        Catch ex As Exception
            MsgBox("Can not open connection ! ")
        End Try
    End Sub
End Class
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
SQLite kullan :) portatiflik için en güzel veritabanı çözümü :)
evet öyle gibi ama onuda kurmak ayarlamak bir dert her bilgisayarda yok çoğu kimsede ayarlamayı falan bilmiyor benim programı çalıştırmak isteyenlerin çoğu başarısız olur bu nedenle çok tercih edemem access aşırı büyük database olmıyacaksa en basiti ve kullanışlısı gibi görünüyor
 
Katılım
31 Aralık 2007
Mesajlar
17,486
Reaksiyon puanı
189
Puanları
243
evet öyle gibi ama onuda kurmak ayarlamak bir dert her bilgisayarda yok çoğu kimsede ayarlamayı falan bilmiyor benim programı çalıştırmak isteyenlerin çoğu başarısız olur bu nedenle çok tercih edemem access aşırı büyük database olmıyacaksa en basiti ve kullanışlısı gibi görünüyor

SQLite'ı kurmana gerek yok :) Sen SQL ile karıştırdın :) SQLite, DB Engine olmadan çalışabilen bir yapıya sahip sadece programının yanında connection DLL'i tutman yeterli :)
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
SQLite'ı kurmana gerek yok :) Sen SQL ile karıştırdın :) SQLite, DB Engine olmadan çalışabilen bir yapıya sahip sadece programının yanında connection DLL'i tutman yeterli :)
bende SQLite hep sqlserver sanıyordum şimdi araştırdım bunu bağlantı komutlarını buluyorum ama database bilgi girme bilgi silme bilgi değiştirme gibi kodları henüz bulamadım elinde örnek kod varmı acaba
 

Cursed

Asistan
Katılım
26 Eylül 2006
Mesajlar
180
Reaksiyon puanı
1
Puanları
18
hiç bir farkı yok hemen hemen. mdb 'de OledbConnection diyorsan SQL de de sqlconnection diyeceksin yada oledbcommand yerine sqlcommand gibi. mdb yolunu belirtirken programına, başına application.startuppath yazarsan eğer yol olarak .exe nin çalıştığı yere bakacaktır. gerçi sen visual basic kullanmışsın ama ben c# a göre söyledim. eminim onda da buna benzer birşey vardır.
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
access'ten artıları yada eksileri nelerdir acaba
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
SQLLite'yi öğrenmem iyi oldu kodlarını buldum tamamdır ama gelelim asıl sorunumuza crystal repottaki problemi nasıl çözerim bilgileri projedeki datasetten yükleyince .rpt formumda bilgilerle dolmuyor ama tasarımcıda önizlemede herşey görünüyor sorun yokmuş gibi ama uygulamada boş bir form çıkıyor doğrudan .mdb dosyasından bilgileri yükleyince herşey çalışıyor ama bu seferde .mdb dosyası program hangi bilgisayara kurulursa kurulsun herzaman aynı konumda olmak zorunda buda kabul edilebilir birşey değil.
Bu iş için aşağıdaki kodu buldum bu benim işimi görür diye düşünüyorum ama SetupReport fonksiyonunu bir türlü ayarlayamadım birsürü tanımsız değişken hatası veriyor bir inceleyebilirmisiniz
Kodun Kaynağı = http://www.webdeveloper.com/forum/showthread.php?t=200791
Alternatif bir kaynak daha = http://snippets.dzone.com/posts/show/4029
Kod:
    Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            CrystalReportViewer1.ReportSource = "ZTab.rpt"
            CrystalReportViewer1.Zoom(1)

    End Sub
Kod:
    Private Sub btnRun_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRunNow.Click

        CrystalReportViewer1.ReportSource = combobox1.SelectedItem
        CrystalReportViewer1.Zoom(1)

    End Sub
Kod:
  Dim myreport As New ReportDocument
    Dim strDSN As System.String
    Dim strDB As System.String
    Dim strUID As System.String
    Dim strPWD As System.String

   Private Sub frmMain_Load(ByVal sender........
           CrystalReportViewer1.ReportSource = "ZTab.rpt"
   End Sub

   Private Sub btnChangeDataBase_Click(ByVal sender ........        
        strNewPath = "C:\Projects\Employee.mdb"
        myreport.Load("ZTab.rpt")
        SetupReport(myreport)
   End Sub

   Private Function SetupReport(ByRef objCrystalReportDocument As CrystalDecisions.CrystalReports.Engine.ReportDocument) As System.Boolean

        Dim crTableLogOnInfo As CrystalDecisions.Shared.TableLogOnInfo
        Dim crDatabase As CrystalDecisions.CrystalReports.Engine.Database
        Dim crTables As CrystalDecisions.CrystalReports.Engine.Tables
        Dim aTable As CrystalDecisions.CrystalReports.Engine.Table
        Dim bTable As CrystalDecisions.CrystalReports.Engine.Table
        Dim blnTest As System.Boolean
        Dim strLocation As System.String
        
        crDatabase = objCrystalReportDocument.Database
        crTables = crDatabase.Tables

        For Each aTable In crTables
            crTableLogOnInfo = aTable.LogOnInfo

            strDSN = crTableLogOnInfo.ConnectionInfo.ServerName
            strDB = crTableLogOnInfo.ConnectionInfo.DatabaseName
            strUID = crTableLogOnInfo.ConnectionInfo.UserID
            strPWD = crTableLogOnInfo.ConnectionInfo.Password

            OutputDebugLine("BEFORE")
            OutputDebugLine("TABLE NAME: " & aTable.Name)
            OutputDebugLine("TABLE LOC: " & aTable.Location)
            OutputDebugLine("SERVER: " & strDSN)
            OutputDebugLine("DB: " & strDB)
            OutputDebugLine("UID: " & strUID)
            OutputDebugLine("PWD: " & strPWD)
            OutputDebugLine("REPORT NAME: " & crTableLogOnInfo.ReportName)
            OutputDebugLine("Table Name: " & crTableLogOnInfo.TableName)

            aTable.ApplyLogOnInfo(crTableLogOnInfo)
            
            strLocation = strNewPath   'pass new mdb name
           
            OutputDebugLine("New Location: " & strLocation)
            Try
                aTable.Location = strLocation
            Catch ex As Exception
                OutputDebugLine("Set Location Error: " & ex.ToString)
            End Try

            OutputDebugLine("AFTER")
            OutputDebugLine("TABLE NAME: " & aTable.Name)
            OutputDebugLine("TABLE LOC: " & aTable.Location)
            OutputDebugLine("SERVER: " & strDSN)
            OutputDebugLine("DB: " & strDB)
            OutputDebugLine("UID: " & strUID)
            OutputDebugLine("PWD: " & strPWD)
            OutputDebugLine("REPORT NAME: " & crTableLogOnInfo.ReportName)
            OutputDebugLine("Table Name: " & crTableLogOnInfo.TableName)
            Try
                blnTest = aTable.TestConnectivity()
                OutputDebugLine("CONNECTED? " & blnTest.ToString())
            Catch ex As Exception
                OutputDebugLine("CONNECTED? NO")
                OutputDebugLine(ex.ToString)
            End Try
        Next aTable

        myWrite.Close()
        myWrite = Nothing
        myFile = Nothing

        CrystalReportViewer1.ReportSource = myreport
    End Function
 

Champion78

Müdavim
Müdavim
Katılım
29 Eylül 2006
Mesajlar
1,716
Reaksiyon puanı
43
Puanları
228
Bilmiyorum problemini çözdün mü veya yöntem mi değiştirdin :) ama veritabanı dosyan için şöyle bir şey önerebilirim (tabi hala access kullanıyorsan)
Aşağıdaki kod bloğu var ya senin yazdığın:


Kod:
connetionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=yourdatabasename.mdb;"


burdaki yourdatabasename.mdb kısmını şöyle yapabilirsin (not: ben c# taki halini gösteriyorum, benzeri vardır basic de :))



Kod:
connetionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ="+Application.StartupPath+@"\yourdatabasename.mdb;"


bu kodu yazarsan, mdb dosyanı exe nin yanına koyduğun müddetçe her yerde çalışır :)
 
Üst