ich nutze eine Anwaltssoftware die in VB 6 programmiert ist. Auf das Wesentliche reduziert arbeitet die Software wie folgt:
-Bei Neuanlage einer Akte wird ein Aktenzeichen vergeben,
-ein Windowsordner wird im Verzeichnis angelegt,
-über die GUI kann ich Daten wie Name, Postanschrift ... eingeben, die dann in einer SQL-Datenbank gespeichert werden.
Das Besondere ist, dass ich in diesem Programm selbst geschriebene Programme als .exe eintragen kann und in der GUI gibt es dann einen Button zum starten des Programms. Ich kann also meine Python-Anwendung direkt aus der Anwaltssoftware-GUI aufrufen.
https://www.a-jur.de/zubehoer.htm
Ich habe bisher beim Erstgespräch handschriftliche Notizen angefertigt. Mit dem Qt Designer hab ich jetzt ein kleines Programm geschrieben, mit dem ich die Notizen direkt im Laptop eingebe und dann in der SQL-Datenbank speichere.
Jetzt zu meiner Frage: Die Notizen müssen natürlich zur richtigen Akte gespeichert werden. Dazu muss die Anwaltssoftware das Aktenzeichen an die Python-Anwendung übergeben. Den VB 6 Code schreibe ich unten hin. Aber wie geht das in Python?
Hier viewtopic.php?t=5966 hab ich gelesen, dass es wohl mit "optparse" funktioniert? Aber ich kann in der Anwaltssoftware keinen Befehl "shell" aufrufen. Auf den dortigen Code hab ich keinen Zugriff.
Ich hoffe, dass mir "optparse" erspart, den ganzen untenstehenden Code von VB 6 zu Python umzuschreiben.
Code: Alles auswählen
Imports Reg = Microsoft.Win32.Registry
Imports System.Data.SqlClient
Imports fio = Microsoft.VisualBasic.FileIO.FileSystem
Imports System.Deployment.Application
Public Class frmdemo
Public Const HCU As String = "HKEY_CURRENT_USER\"
Public Const ajk As String = "a-jur-Kanzleisoftware"
Friend sGapKey As String = "SOFTWARE\" & ajk
Friend sZoomKey As String = sGapKey & "\Zoom"
Friend sOptionenKey As String = sGapKey & "\optionen"
Friend sFavoritenKey As String = sGapKey & "\favoriten"
Friend sFavoriten2Key As String = sGapKey & "\favoriten2"
Friend sAutostartKey As String = sGapKey & "\autostart"
Friend sDatenbankenKey As String = sGapKey & "\datenbanken"
Friend sDatabaseKey As String
Dim NetAdoCnnStr As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Datenpool As String
Datenpool = Reg.GetValue(HCU & sDatenbankenKey, vbNullChar, String.Empty)
If Datenpool Is Nothing Or Datenpool = String.Empty Then
MsgBox("Es ist keine frühere Verbindung angegeben.", MsgBoxStyle.Critical)
Exit Sub
End If
Dim rk As Microsoft.Win32.RegistryKey = Reg.CurrentUser.OpenSubKey(sDatenbankenKey & "\" & Datenpool & "\Verbindung")
If rk Is Nothing Then
MsgBox("Keine Verbindungsparameter gefunden.", MsgBoxStyle.Critical)
Exit Sub
End If
Dim cnnNet As New SqlConnectionStringBuilder
Dim wert As String
For Each valueName As String In rk.GetValueNames
wert = rk.GetValue(valueName).ToString
Select Case valueName
Case "Data Source", "Integrated Security", "Initial Catalog", "User Id", "Password"
cnnNet.Add(valueName, wert)
End Select
Next
NetAdoCnnStr = cnnNet.ToString
rk.Close()
Dim cnn = New SqlConnection(NetAdoCnnStr)
Try
cnn.Open()
Catch ex As SqlException
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Verbindung zu " & Datenpool)
Exit Sub
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Verbindung zu " & Datenpool)
Exit Sub
End Try
cnn.Close()
sDatabaseKey = sDatenbankenKey & "\" & Datenpool
Dim Parameter As Array = (Environment.CommandLine & ",,,,").Split(",")
Dim Az As String = Parameter(1).trim
Dim AdressId As Long = Val(Parameter(2))
Dim Abi As Long = Val(Parameter(3))
' Az = "5555/55"
' AdressId = 16
' Abi = 1
Me.lblAz.Text = Az
Me.lblAdressId.Text = AdressId.ToString
Me.lblAbi.Text = Abi.ToString
Dim ada As New SqlDataAdapter("SELECT * FROM akten WHERE aktenzeichen='" & Az & "'", cnn)
Dim dt As New DataTable
cnn.Open()
ada.Fill(dt)
If dt.Rows.Count > 0 Then
Me.lblAktenbezeichnung.Text = dt.Rows(0).Item("Kurzrubrum")
End If
cnn.Close()
ada = New SqlDataAdapter("SELECT * FROM adressen WHERE id=" & AdressId, cnn)
dt = New DataTable
cnn.Open()
ada.Fill(dt)
If dt.Rows.Count > 0 Then
Me.lblVollername.Text = dt.Rows(0).Item("Vollername")
End If
cnn.Close()
ada = New SqlDataAdapter("SELECT * FROM aktenbeteiligte WHERE id=" & Abi, cnn)
dt = New DataTable
cnn.Open()
ada.Fill(dt)
If dt.Rows.Count > 0 Then
Me.lblBetreff.Text = dt.Rows(0).Item("betreff")
End If
cnn.Close()
ada.Dispose()
dt.Dispose()
End Sub
Private Sub cmdClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdClose.Click
Application.Exit()
End Sub
End Class