Autor Beitrag
Ritzeratze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Sa 10.10.15 10:23 
Hi,

ich habe ein Formular (Kundensuchedetail) mit einem Textfeld (txtSuchen) in dem ich einen Kundenname eingeben kann.

Über ein SQL möchte ich den Wert in einer DB suchen.

ausblenden SQL-Anweisung
1:
2:
3:
SELECT kNummer, kName, kVorname, kStrasse, kplz, Kort, Ktelefon1, Ktelefon2
FROM     Kunde
WHERE  (kName = [Kundensuchdetail].[txtsuchen.Text]);


funktioniert leider nicht.

Wie müsste der SQL denn korrekt aussehen ?

Danke, und Gruss
Ritze
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 10.10.15 10:36 
Hallo,

das Stichwort dafür lautet: SqlParameter
s. z.B. Lesson 06: Adding Parameters to Commands

PS: Statt des im Artikel verwendeten Erzeugen eines eigenen SqlParameter-Objekts gibt es die SqlParameterCollection.AddWithValue-Methode, um den Code kürzer und lesbarer zu machen (s. dortiges Beispiel) - vllt. ist dann doch 24.4 Parametrisierte Abfragen für dich hilfreicher...


Zuletzt bearbeitet von Th69 am Sa 10.10.15 10:43, insgesamt 1-mal bearbeitet
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Sa 10.10.15 10:42 
Hi Th69,

Danke für Deine Antwort.
meine anderen Suchparameter funktionieren ja. Hier ist nur das Problem, das der Suchstring aus einen anderen Formular kommt, und nicht genau weiß wie ich das Formualr ansprechen muss.


Gruss Ritze
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 10.10.15 10:47 
Von was für Formularen sprichst du denn? Verwendest du eine externe Komponente (z.B. DevExpress oder Telerik)?
Nur bei Reportgeneratoren kenne ich die in deinem SQL-Beispiel verwendete Syntax.
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Sa 10.10.15 11:13 
Siehe Oben .

Mein Formular heißt Kundesuchdetail und die Textbox dort heißt txtsuchen.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Sa 10.10.15 11:31 
Sorry Ritze, aber so kann ich dir nicht helfen.
Die von dir verwendete Syntax mit den eckigen Klammern ist kein Standard-SQL (und auch nicht direkt mit den Standard C# Datenbank-Komponenten verwendbar).
An welche Komponente übergibst du denn den SQL-String?
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Sa 10.10.15 11:44 
Ok, Schade,

muss ich selbst noch ein bißchen probieren. Könnte Dir das Projekt einmal schicken, aber leider hier nicht veröffentlichen.

trotzdem Danke für den Versuch.

Gruss und schönes Restwochenende
Ritze
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 10.10.15 13:39 
Zitat:
Hier ist nur das Problem, das der Suchstring aus einen anderen Formular kommt, und nicht genau weiß wie ich das Formualr ansprechen muss.


Gar nicht da die Codestelle die andere Form/das andere Window nicht kennt wenn du nicht einen Verweis darauf zu der Stelle wo du sie brauchst hin transportierst.
Instanzen von Klassen sind nicht einfach so überall bekannt man muss schon dafür sorgen das an der entsprechenden Stellen ein Verweis darauf da ist (z.B. in Form einer Variablen mit dem entsprechenden Verweis). Vielleicht hilft dir der Gedanke das eine Form/Window nichts besonders ist. Es ist eine Klasse von der man Instanzen erzeugen kann und die sich auch haargenau so verhalten wie andere Instanzen anderer Klassen. Sie hat halt die Fähigkeit sich irgendwo anzuzeigen so wie andere Klassen eben die Fähigkeit haben Verbindungen zu Datenbanken aufzubauen oder Dinge in Dateien zu schreiben haben oder oder oder ....

Beispiel: Du möchtest 2^zahl berechnen in einer ausgelagerten Methode die 2^x berechnen kann. Dein Gedankengang übersetzt (so wie ich deine Frage verstanden habe) würde folgendes bedeuten

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
class Program
{
    static void Main(string[] args)
    {
        double zahl = 5.0;
        double unbenutzerUnsinn = 1.0

        double result = ZweiHochX();
        Console.WriteLine(result);
    }

    static double ZweiHochX()
    {
        return Math.Pow(2.0, [double]);
    }
}


In ZweiHochX() double anzusprechen ist offensichtlich falsch. Welcher double denn? Man könnte als nächstes [zahl] anstatt [double] versuchen aber dir ist vermutlich klar das das genauso Unsinn ist. Ein Variablenname ist weder eindeutig noch überall bekannt sondern nur in dem Scope in dem die Variable definiert ist. zahl gibt es im Beispiel nur in der main Methode. Lösung? Natürlich du musst der Methode ZweiHochX einen Parameter geben und zahl übergeben. Und jetzt wiederhole ich die Aussage
"eine Form/Window ist eine Klasse wie jede andere auch".
Genauso wie zum Beispiel ein double.
ebk
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 26.10.15 00:40 
@all, das stimmt zwar alles, könnt mir aber vostellen, dass er gar nicht vor hat auf irgendein Formular zu verweisen.
Das Codebeispiel sieht mir sehr nach Access-Zeugs aus(Querys die an ein Form gedunden sind)

@Ratze
Falls deineFrage also nur darauf abziehlt, wie ein sqlstring aussehen muss, um innerhalb des Winform Kundedetail zu filtern, mit einem Wert aus einem textfeld, dann geht das so:
ausblenden Quelltext
1:
WHERE DeineTabelle.DeinField = " & Me.DeinTextfeld.Text // wenn DeinFiled ein numerischer Wert ist.					

sonst:
ausblenden Quelltext
1:
WHERE DeineTabelle.DeinField = "'" & Me.DeinTextfeld.Text & "'"					

Moderiert von user profile iconTh69: Code-Tags hinzugefügt