2010-11-30 7 views
0

Mon objectif est de me connecter à ma base de données soit manuellement ou en utilisant un sqladapater, et obtenir des informations à partir de deux de mes bases de données sur SQL Server 2005. Ensuite, je veux prendre cette information et commencer l'exécution ajouter/soustraire/diviser/multiplier certaines colonnes et placer les informations dans d'autres colonnes. Je peux le faire dans les requêtes, cependant, je veux le faire au moment de l'exécution quelle est la meilleure façon d'y parvenir. J'ai eu un peu de travail, mais je veux juste commencer frais et voir comment vous allez faire cela.base de données et asp.net

Partial Class _Default 
    Inherits System.Web.UI.Page 
    Public cmd As New SqlCommand() 
    Public da As New SqlDataAdapter(cmd) 
    conn string here..... 
    Dim ds As New DataSet 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     cmd.Connection = conn 
     conn.Open() 

     ' Dim ds As New DataSet 
     Dim x As New DataTable 

     cmd.CommandText = "SELECT B603SalesAsOFMASTER.DIVISION, B603SalesAsOFMASTER.SDESCR, B603SalesAsOFMASTER.DYYYY, B603SalesAsOFMASTER.AsOFSales, B603SalesAsOFMASTER.ASOFPAX, B603SalesAsOFMASTER.YESales, B603SalesAsOFMASTER.YEPAX, B603SalesAsOFMASTER.PCTofSales, B603SalesAsOFMASTER.PCTofPAX, B601SalesAsOF.Sales AS [Current Sales], B601SalesAsOF.PAX AS [Current PAX], B601SalesAsOF.Sales/B601SalesAsOF.PAX AS [AVG PAX], B601SalesAsOF.Sales/B603SalesAsOFMASTER.PCTofSales AS [Projected Year End] FROM B603SalesAsOFMASTER INNER JOIN B601SalesAsOF ON B603SalesAsOFMASTER.SDESCR = B601SalesAsOF.SDESCR WHERE (B603SalesAsOFMASTER.DYYYY = '2008') AND (B601SalesAsOF.DYYYY = '2010')" 
     'da.Fill(ds) 
     da.Fill(x) 


     GridView1.DataSource = x 

     GridView1.DataBind() 

     da.FillSchema(ds, SchemaType.Mapped) 

     conn.Close() 
    End Sub 

End Class 

C'est ce que je joue autour avec en ce moment, certains de mes calculs sont effectués directement dans la commande SQL, mais je veux changer cela.

+2

Ceci est _extremely_ vague. Fondamentalement, vous demandez "Comment puis-je écrire un programme qui utilise des données?" Peux-tu être plus précis? Montrez-nous ce que vous avez fait jusqu'ici? S'il y a un problème spécifique, donnez-nous juste assez de code pour reproduire le problème? – David

+0

désolé à ce sujet, j'ai ajouté un peu plus de détails – MyHeadHurts

+0

@David +1 pour une réponse tactique. – JeffO

Répondre

2

Il semble comme vous vous demandez comment déplacer un champ calculé sur une requête SQL et dans le code entre la requête et la grille de données obligatoire. (Si je me trompe dans cette interprétation, faites le moi savoir.) Si c'est le cas, this short tutorial devrait avoir exactement ce que vous cherchez. Sur une note de côté, ces membres publics d'accès aux données sur votre classe me rendent mal à l'aise. Ceux-ci pourraient être meilleurs que privés. Ou, mieux encore, encapsulé dans la seule méthode qui les utilise. Jetez dans certains essayer/attraper/enfin pour une bonne mesure et le nettoyage des ressources bien sûr :)

+0

MERCI !!!!!!!!!!!!!! – MyHeadHurts

+0

une dernière chose, si je veux mettre la colonne calculée entre deux colonnes comment pourrais-je faire cela? merci – MyHeadHurts

+0

@NEWprogrammer: L'ordre des colonnes sur la page ne devrait pas importer. Les éléments 'asp: BoundColumn' peuvent être dans n'importe quel ordre, tant qu'ils ont la bonne propriété' DataField' sur eux ils se lieront correctement. – David

1

Créer un Data Access Layer (DAL) 2 - Sqlconnections, un pour chaque db Utilisez un sqlreader si vous lisez simplement des données et un adaptateur si vous devez apporter des modifications. Utilisez une chaîne sql ou des procédures stockées pour récupérer vos données «non calculées», mais assurez-vous qu'elles sont paramétrées si vous envisagez d'autoriser l'interface utilisateur à effectuer un filtrage.

* Étude sur SQL Injection évitant

Créer une Business Logic Layer C'est là, vous pouvez prendre les données de la DAL et faire vos calculs.

Couche de présentation Il semblerait qu'il s'agisse d'une page Web avec visionneuse de grille ou d'un contrôle de répéteur en fonction de vos besoins. Voici quelques idées pour vous aider à aller: http://msdn.microsoft.com/en-us/library/bb498211.aspx