Jeder hier war schon immer eine große Hilfe, entweder direkt oder indirekt. Und es ist mit großer Hoffnung, dass dies wieder einmal wahr ist.Problem beim Eingeben eines VB-Parameters in eine gespeicherte Prozedur (FireBird)
Zur Klarstellung sakes wird die gespeicherte Prozedur unter Firebird läuft und der VB ist die .NET Vielzahl
Ich habe eine gespeicherte Prozedur (Auszug unten, wichtige Bit ist die WHERE)
select pn, pnm.description, si_number, entry_date, cmp_auto_key,
parts_flat_price, labor_flat_price, misc_flat_price, woo_auto_key,
wwt_auto_key
from parts_master pnm, wo_operation woo
where pn like :i_pn || '%'
and pnm.pnm_auto_key = woo.pnm_auto_key
into :pn, :description, :work_order, :entry_date, :cmp, :parts_price,
:labor_price, :misc_price, :woo, :wwt
ich versuche, einen Parameter aus einer vb app passieren, die den Parameter I_PN verwendet, den Code von der unten folgt (die Variablen für MyServer und MyPassword sind einen früheren Teil des Codes bestimmt Form.)
Try
Dim FBConn As New FirebirdSql.Data.FirebirdClient.FbConnection()
Dim FBCmd As FirebirdSql.Data.FirebirdClient.FbCommand
Dim MyConnectionString As String
MyConnectionString = _
"datasource=" & MyServer & ";database=" & TextBox4.Text & "; & _
user id=SYSDBA;password=" & MyPassword & ";initial catalog=;"
FBConn = New FirebirdSql.Data.FirebirdClient. & _
FbConnection(MyConnectionString)
FBConn.Open()
FBConn.CreateCommand.CommandType = CommandType.StoredProcedure
FBCmd = New FirebirdSql.Data.FirebirdClient. & _
FbCommand("WIP_COSTS", FBConn)
FBCmd.CommandText = "WIP_COSTS"
FBConn.CreateCommand.Parameters. & _
Add("@I_PN", FirebirdSql.Data.FirebirdClient.FbDbType.Text). & _
Value = TextBox1.Text
Dim I_PN As Object = New Object()
Me.WIP_COSTSTableAdapter.Fill(Me.WOCostDataSet.WIP_COSTS, @I_PN)
FBConn.Close()
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
Wenn ich die VB.App ausführen und versuchen, das Programm auszuführen, bekomme ich folgende Fehler:
Dynamic SQL Error
SQL Error Code = -206
Column Unknown
I_PN
At Line 1, column 29
Und ich kann ganz meinen Finger nicht setzen auf das, was das eigentliche Problem ist. Das heißt, ich weiß nicht, ob meine Logik auf der VB-Seite oder auf der Stored Procedure falsch ist.
Jede Codierung, die enthalten ist, wird aus Beispielen zusammengefügt, die ich mit verschiedenen Code-Stücken gefunden habe, die während langer Aufenthalte von GoogleFu gefunden wurden.
Als jemand mit mehr als einem Monat oder zwei Erfahrung (im Gegensatz zu mir) mit VB kann nur mit einem Blick bestätigen - mein Code ist wahrscheinlich ziemlich beschissen und nicht gut geformt - sicherlich nicht elegant und sicher in Betrieb. Ich bin auf jeden Fall mit offenen Armen in allen Geschmacksrichtungen.
Wie üblich, wenn Sie weitere Fragen haben, werde ich sie nach besten Kräften beantworten.
Nochmals vielen Dank.
Jasoomian
HardCode - immer noch keine Freude. Immer noch den gleichen Fehler zur Laufzeit erhalten. – Jasoomian
Ich kenne nicht die Syntax von Firebirds SPs, aber diese Aussage - wo pn wie: i_pn || '%' - sieht so aus, als würde es sagen "LIKE der Parameter OR%" - anstatt - "LIKE der mit% verkettete Parameter". Sollte es vielleicht "wo pn wie: i_pn + '%'" – HardCode
In Firebird, die || ist das Verkettungszeichen, also tut der Code bereits, was Sie vorgeschlagen haben (zumindest auf diese Weise.) – Jasoomian