[Gelöst] CC: SQL Tabellen

19. März 2014 11:34

Hallo,

gibt es eine Möglichkeit im CC herauszufinden, hinter welcher Tabelle im Object Designer, sich welche Tabelle auf SQL Ebene befindet?


MfG
Christian
Zuletzt geändert von navCH am 20. Januar 2016 11:30, insgesamt 1-mal geändert.

Re: CC: SQL Tabellen

19. März 2014 11:38

Dieselbe wir im Designer; davor der Mandantenname abgetrennt durch '$' und '.' wird ersetzt durch '_' - wimre

HTH

Re: CC: SQL Tabellen

19. März 2014 12:16

Markus Merkl hat geschrieben:'$' und '.' wird ersetzt durch '_' - wimre

HTH

Achso, '.' wird ersetzt durch '_'

Re: CC: SQL Tabellen

19. März 2014 12:21

(5050) Contact -> [dbo].[CRONUS (Schweiz) AG$Contact]
und (8627) Config. Setup -> [dbo].[CRONUS (Schweiz) AG$Config_ Setup].

Re: CC: SQL Tabellen

20. März 2014 14:20

Ich meine das könnte auch anders sein. Ich meine man kann den Tabellennamen in NAV unabhängig vom SQL-Namen vergeben.

Mit dem .NET Code kann man über die NAV-Tabellen-No. die SQL-Tabelle bekommen. Das könnte man nun auch in eine DLL packen und als Automation einbinden.

Code:
    Function GetNAVTableObjects() As DataTable

        ' Create Instance of Connection and Command Object
        Dim myConnection As New SqlConnection
        If My.Settings.NAVSQLAuth = "Database" Then
            myConnection.ConnectionString = "server=" & My.Settings.NAVSQLServer & ";Trusted_Connection=False;database=" & My.Settings.NAVSQLDatabase & "User ID=" & My.Settings.NAVSQLUser & ";Password=" & My.Settings.NAVSQLPassword & ";"
            'Server=myServerAddress;Database=myDataBase;User ID=myUsername;Password=myPassword;Trusted_Connection=False;
        Else '"Windows"
            myConnection.ConnectionString = "server=" & My.Settings.NAVSQLServer & ";Trusted_Connection=true;database=" & My.Settings.NAVSQLDatabase & ";"
        End If

        Dim myCommand As New SqlCommand
        myCommand.CommandText = "SELECT [timestamp],[Type],[Company Name] as CompanyName,[ID],[Name],[Modified],[Compiled],[BLOB Reference] as BLOBReference,[BLOB Size] as BLOBSize,[DBM Table No_] as DBMTableNo,[Date],[Time],[Version List] as VersionList,[Locked],[Locked By] as LockedBy FROM [Object] where [Type]=0"
        myCommand.Connection = myConnection

        Dim da As New SqlDataAdapter
        da.SelectCommand = myCommand

        Dim ds As New DataSet
        myConnection.Open()
        da.Fill(ds, "object")

        'myCommand.ExecuteNonQuery()
        myConnection.Close()
        'ds.WriteXml("navobjects_test.xml")
        Return ds.Tables("object")

    End Function
    Function GetNAVTableName(NAVTableID As String) As String

        Dim tablename As String = ""
        Dim foundrows() As DataRow
        foundrows = GetNAVTableObjects.Select("ID=" & NAVTableID)
        If foundrows.Count = 0 Then
            MsgBox("Tabelle " & NAVTableID & " nicht vorhanden")
            Exit Function
        End If
        For Each row As DataRow In foundrows
            If row("CompanyName").ToString.Length > 0 Then
                If My.Settings.NAVCompany = row("CompanyName") Then
                    'Tabelle: Datapercompany=yes => tabellenname=Mandant$tabname
                    tablename = row("CompanyName") & "$" & row("Name")
                    Exit For
                End If
            Else
                tablename = row("Name")
                Exit For
            End If
        Next

        Return tablename

    End Function