Zurück   Flashforum > Flash und Server > Flash Remoting

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-03-2006, 13:03   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 3
Exclamation Flash AMF.NET MSSQL - Plz HELP !!!

Hallo,
ich versuche Flash8 an eine MSSQL DB über ein AMFNET-Gateway (AMFPHP für .Net) anzubinden. Das Ganze funktioniert grob so, dass das Flash über das Gateway die Funktionen in meiner C#-Klasse aufruft. Die Funktionen setzten SQLs auf die MSSQL DB ab. Das Ergebnis der Funktionen wird dann wohl wieder über das Gateway zurück an das Flash geschickt.

Soweit funktioniert das alles. Ich lasse mein Flashmovie laufen und bekomme munter meine Datenbankabfragen (mehrere hintereinander, sowie Abfragen die durch Schleifen oder andere Funktionen im Flash aufgerufen werden). Ich kann auch die Funktionen meiner Klasse debuggen und fröhlich Haltepunkte setzten. Alles kein Problem.

JETZT zu meinem Problem:
Klicke ich in mein Flashmovie rein, so bekomme ich zwar den trace("getData-läuft") und trace("DB wurde gelesen") angezeigt (er ruft also die GetData(25) auf), jedoch bekomme ich kein Ergebnis vom RelayResponder zurück. Weder onSuccess() noch onFault() werden aufgerufen. Auch das Debuggen der C# Funktionen geht nicht mehr, weil diese nicht mehr aufgerufen werden.

Ich habe die Vermutung, dass was mit dem PendingCall oder dem RelayResponder nicht stimmt. Der RelayResponder ist nach einem Klick in deas Flashmovie immer "undefined". =(

Zur Info:
Mein Flash-Haupt-Movie (oder wie man das nennt) besteht lediglich aus EINEM Frame.

WORAN kann es also liegen, dass der Aufruf der Datenbankabfragen über PendinCall und RelayRepsonder NACH einem Klick in das Flashmovie NICHT mehr funktionieren ???? *verzweifeltsei*


Quellcode: meinflash.fla
/************************************************** *****/
import mx.remoting.Service;
import mx.remoting.PendingCall;
import mx.services.Log;
import mx.rpc.RelayResponder;
import mx.rpc.ResultEvent;
import mx.rpc.FaultEvent;

// Setup flash movie to use the gateway
// Alle Anfragen die auf die gateway.aspx gehen werden auf die amfnet.dll umgeleitet, die dann die Funktionen meiner Klasse aufruft !!!

var service:Service = new Service('http://localhost/gateway.aspx',null,'mynamespace.myclass, App_Code);

//Aufruf der Funktion (kann auch mehrmals hintereinander
//oder auch von anderen funktionen aufgerufen werden)

getData(25);


// Call the .NET method in flash, passing in appropriate parameters, and hookup callback to receive the response:
function getData (x)
{
trace("getData-läuft");
var pc:PendingCall = service.DatenLesen(x);
pc.responder = new RelayResponder(this, "onSuccess", "onFault");
trace("DB wurde gelesen");
}

function onSuccess(re:ResultEvent):Void {
trace(re.result);
}

function onFault():Void {
trace("Error");
}
/************************************************** *****/


Quellcode gateway.cs
/************************************************** *****/

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace kroki
{
public class gateway
{
public int DatenLesen(int x)
{
//Verbindung zum SQL-Server wird aufgebaut und SQLs Abgesetzt
...
(ergebnis = "meine SQL Abfrage")
...
//Ergebnis der SQL-Abfrage wird zurückgegeben

return ergebnis;
}
}
}

Geändert von DocBoom (07-03-2006 um 13:50 Uhr)
DocBoom ist offline   Mit Zitat antworten
Alt 07-03-2006, 13:29   #2 (permalink)
r0b
Neuer User
 
Benutzerbild von r0b
 
Registriert seit: Feb 2002
Ort: Hamburg
Beiträge: 1.281
PHP-Code:
var pc:PendingCall service.DatenLesen(x);
pc.responder = new RelayResponder(this"onSuccess""onFault");
trace("DB wurde gelesen");
}

function 
onSuccess(re:ResultEvent):Void {
trace(re.result);
}

function 
onFault():Void {
trace("Error");

Hm...

Sollte es hier nicht:
pc.responder.onSuccess() ... heißen?
pc.responder ist das "ResponderObjekt" das dann die Events zugesendet bekommt. So habe ich das jedenfalls in erinnerung bei der reinen php/mySQL Variante.
Außerdem denke ich, das onSuccess nur ein true/false zurückbekommt. Die eigentlichen Daten sollten bei onResult rauskommen. Das ist jetzt aber mal nur eine Vermutung.

Hoffe das hilft dir weiter.

Gruß

Robert
__________________
robertreich.de v4 | Pixelfonts & FlashSite Tutorial
Friends of ED - Byte Size Flash MX: Adventures in Optimization

"Give a man a fish, and he eats for a day... Show him how to fish, and he eats for a lifetime."
r0b ist offline   Mit Zitat antworten
Alt 07-03-2006, 14:17   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 3
Unhappy

pc.responder = new RelayResponder(this, "onSuccess", "onFault");
------------------------------------------^^----------^^

So wie ich das in der Hilfe von Flash unter "Flash Remoting verwenden" verstanden habe, soll man dort die Funktionsnamen der Funktionen eintragen, die dann aufgerufen werden sollen (je nach dem ob erfolgreich oder nicht erfolgreich).

wenn ich ja das Flashmovie laufen lasse, dann funktioniert das ja auch...
NUR nicht wenn ich in das Flashmovie rein-klicke..... pc.responder = new RelayResponder(this, "onSuccess", "onFault");
------------------------------------------^^----------^^

So wie ich das in der Hilfe von Flash unter "Flash Remoting verwenden" verstanden habe, soll man dort die Funktionsnamen der Funktionen eintragen, die dann aufgerufen werden sollen (je nach dem ob erfolgreich oder nicht erfolgreich).

wenn ich ja das Flashmovie laufen lasse, dann funktioniert das ja auch...
NUR nicht wenn ich in das Flashmovie rein-klicke..... (ich hab zwar noch eine OnMouseEvent-Funktion, die lediglich nur graphische Sachen berechnet, aber sonst nichts mit Connections und dergleichen zu tun hat)

Zudem würde ich dann,wenn das PendingCall und der RelayResponder funktionieren würden, auch in meiner Klasse debuggen können. Aber die meine Klasse wird garnicht erst angesprochen.

Zudem würde ich dann,wenn das PendingCall und der RelayResponder funktionieren würden, auch in meiner Klasse debuggen können. Aber meine Klasse wird garnicht erst angesprochen.


1. Änderung:
ICH HAB NOCH WAS HERAUSGEFUNDEN !!!
wenn ich die onMouseEvents (up, down, move) auskommentiere, dann funktioniert meine DB-verbindung wieder.... ich benötige aber diese Events in meinem Flash, weil es ein Interaktives FlashMovie ist.

2. Änderung:
Ha, ich habe mein Problem gefunden.
- Die DB-Verbindung funktioniert einwandfrei !!!
- auch die OnMouseEvents kann ich benutzen (ohne Probleme)

Der Fehler war, dass ich eine Variable "MX" (für die X-Position meiner Maus) deklariert und einen Wert zugewiesen habe, die anscheinend predefined ist. Das hat mir wohl die IMPORTS zerschossen.Tja, aus Fehler lernd man !!! *g*

Danke nochmal für die Mühen.

Geändert von DocBoom (07-03-2006 um 17:47 Uhr)
DocBoom ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 03:08 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele