In VBCode einer Variablen das Ergenis einer SQL-Abfrage zuweisen
Michael Böhme
Ich möchte in VB einer Variablen das Ergebniss einer SQL-Abfrage zuweisen.Ganz simpel: Abfrage = SELECT * FROM *
Mir ist klar das das Ergebnis der Abfrage nur einen String enthalten darf. Das ist schon geregelt.
Mir fehlt eigentlich nur die Syntax.
Kann mir jemand helfen?
Vielen Dank schon einmal.
Michael
Manuel Marhold
Hi Michael,Using DA As New System.Data.SQLClient.SQLDataAdapter("SELECT..",SwissAddOnFramework.Company.Connection (??))
VBVar = DA.SelectCommand.ExecuteScalar().ToString()
End Usingdie sql-connection musst du noch raussuchen, ist aber im Framework drin
Mit GetCompany().Connection.. oder so..
Michael Böhme
Hallo Manuel,erstmal vielen Dank für Deine Mühe. Aber meine mangelden Kenntnisse und die erfolglose Recherche bezüglich der sql-connection lassen mich verzweifeln.
Trotz meiner eigenlich vorhandenen Programmierkenntnisse (Alte Schule Basic / Turbo Pascal usw...) ist VB doch ne ganz schöne Hausnummer.
Warum muss ich überhaupt eine connection aufbauen wenn ich doch schon in SAP bin ?
Vieleicht macht es Dir nicht so viel Mühe wie mir und Du fomulierst den Code komplett ??!!
Eine große Bitte, ich weis.
Schonmal vielen Dank !
Michael
Manuel Marhold
Hi Michael,du brauchst keine Verbindung herstellen, dazu nutzt du die von coresuite.
aber das sollte gehen:
Dim MyVBVar As String= "";
Dim DR As System.Data.SqlClient.SqlDataReader = Nothing;
Try
DR = SwissAddonFramework.B1Connector.GetB1Connector().ExecuteQuery("SELECT TOP 1 Field FROM Table")
If (DR.HasRows) Then
If (DR.Read) Then MyVBVar = DR.GetString(0)
End If
Finally
If (DR IsNot Nothing) Then
If (DR.IsClosed = False) Then DR.Close()
DR=Nothing
End if
End try
Michael Böhme
Hallo Manuel,leider noch nicht ganz erfolgreich. Die beiden Semikolons hinter
Dim MyVBVar As String= "";
Dim DR As System.Data.SqlClient.SqlDataReader = Nothing;
führen zu dieversen Fehlermeldungen und in der Zeile
If (DR IsNot Nothing) Then
wird vom editor IsNot und Then rot unterstrichen.
Wenn ich nun die beiden Semikolons entferne bekomme ich beim parsen zwar keine Fehlermeldung mehr aber die Variable ist immer leer !
Idee ?
Gruß Michael
Manuel Marhold
Hi Michael,sry, hatte das erst in c#.. da muss man ja ; am Ende machen.
ersetze die Zeile
If (DR IsNot Nothing) Then
durch
If (DR Is Nothing)=False Then
Michael Böhme
Hallo Manuel,der Quellcode ist zwar jetzt 'fehlerfrei', ergibt aber immer noch kein Ergebniss für die Variable. Das Ergebniss der Abfrage ist immer 'Nichts'.
Wenn ich in der Zeile:
If (DR.Read) Then MyVBVar = DR.GetString(0) korrigiere in
If (DR.Read) Then MyVBVar = "TEST"
funktioniert der Rest meines Programmes und übernimmt den Inhalt der Variable. D.h. die Variable bekommt mit = DR.GetString(0) kein Ergebniss von der Abfrage.
Noch Ideen ?
Gruß Michael
Manuel Marhold
Hi Michael,bekommst du einen Wert von der Abfrage zurück, wenn du diese manuell in Abfrage-Generator ausführst?
Prüfe mal mit DR.IsDBNull(0) [boolean] ob der Wert der Abfrage NULL ist.
Michael Böhme
Meine Testabfrage ist:Select T0.[callID] FROM [dbo].[OSCL] T0 WHERE T0.[callID] = (1234) und ergibt natürlich '1234'
Diese wird später ntürlich komplexer.
Manuel Marhold
Hi Michael,die callID ist ein int-feld.
Das geht so nicht.
Möglichkeiten:
1) in SQL
Select CAST(T0.[callID] as nvarchar(MAX)) AS CallIdStr FROM [dbo].[OSCL] T0 WHERE T0.[callID] = (1234)
2) in VB
If (DR.Read) Then MyVBVar = DR.GetValue(0).ToString()
oder
If (DR.Read) Then MyVBVar = DR.GetInt32(0).ToString()
Michael Böhme
War ein Gedankenfehler. Meine endgültige Abfrage ergibt natürlich einen String und kein Int. Nur leider wollte ich zum Test was 'kurzes' basteln. Asche über mein Haupt.Nun funktioniert es.
Vielen, vielen Dank
Michael
0
Please sign in to leave a comment.
Comments
0 comments