Hy!
Ich probiere gerade mit einem WebService rum - der Service (get_Kunden() lieferte mir auch immer hübsch den Inhalt er Tabelle Kunden zurück.
Nun versuche ich über die Parameter des Services die Suche einzugrenzen - mit der Kundennummer klappt es auch, nur wenn ich versuche nach einem Namen einzugrenzen ...
Wenn ich dieses tue - dann erscheint folgende Fehlermeldung:
Zitat: |
System.ArgumentException: '' kann nicht zu 'System.Int32' konvertiert werden.
Parametername: type ---> System.FormatException: Die Eingabezeichenfolge hat das falsche Format.
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
--- Ende der internen Ausnahmestapelüberwachung ---
at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
at System.Web.Services.Protocols.HtmlFormParameterReader.Read(HttpRequest request)
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.Invoke()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
|
Was soll mir denn das sagen? Irgendwie habe ich da ein Brett vor dem Kopf!
Anbei der Code von get_Kunden():
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| function TWebService1.getKunden(KN_Nr:Integer; Name,Vorname,PLZ,Ort,Telefon:String) :DataSet; var connstr : string; conn : OleDbConnection; cmdSel : OleDbCommand; da : OleDbDataAdapter; ds : DataSet; sql : string; begin connstr:= 'Provider=ASAProv;'+ 'Data Source =Genesis;'; conn:= OleDbConnection.Create(connstr);
sql := 'SELECT * FROM Perso_Haupt WHERE 1=1'; if KN_Nr <> 0 then sql := sql+ ' AND Person_NR = '+KN_Nr.ToString; if Name <> '' then sql := sql+' AND Name = ' + Name; if Vorname <> '' then sql := sql+' AND Vorname = ?'; if PLZ <> '' then sql := sql+' AND PLZ = ?'; if Ort <> '' then sql := sql+' AND Ort = ?'; if Telefon <> '' then sql := sql+' AND Telefon = ?'; sql:= sql+' ORDER BY Person_NR';
cmdsel:=OleDbCommand.Create(sql,conn);
da:= OleDbDataAdapter.Create(cmdsel); ds:= DataSet.Create; conn.Open; da.Fill(ds); conn.Close; Result:= ds; end; |
Wie bekomme ich denn den Namen da rein? in D6 gab es doch quotedstring o.ä.