İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

Visual Studio 2010'da Crystal Report problemi

Vatansever19.02.201113 cevap6.165 görüntüleme
2007'den beri405 mesaj
#1
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
Cevaplar
2007'den beri11 mesaj
#2
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 Konuyu açan
2007'den beri405 mesaj
#3
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ı
2008'den beri3.347 mesaj
#4
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 Konuyu açan
2007'den beri405 mesaj
#5
HapS dedi: ↑
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


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

2007'den beri17 bin mesaj
#6
SQLite kullan :) portatiflik için en güzel veritabanı çözümü :)
Vatansever Konuyu açan
2007'den beri405 mesaj
#7
cgrszone dedi: ↑
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
2007'den beri17 bin mesaj
#8
Vatansever dedi: ↑
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 Konuyu açan
2007'den beri405 mesaj
#9
cgrszone dedi: ↑
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
2006'den beri180 mesaj
#10
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 Konuyu açan
2007'den beri405 mesaj
#11
access'ten artıları yada eksileri nelerdir acaba
2008'den beri3.347 mesaj
#12
Vatansever dedi: ↑
access'ten artıları yada eksileri nelerdir acaba
taşınabilir olması
Vatansever Konuyu açan
2007'den beri405 mesaj
#13
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

    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

    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

  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
2006'den beri1.716 mesaj
#14
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:
Vatansever dedi: ↑


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 :))

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 :)

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.