Hi, hab folgendes Datagrid ( siehe Anlage ) Hab in der TextBox folgende Abfrage: "select * from Data" aber ich bekomme eine Excepion mi der Meldung: Syntax Error: Missing operand after 'Data' operator. Was mache ich falsch? Gruß Agit
hi, ja sry der Text da ist nicht richtig. Wie gesagt gebe das hier ein. "select * from Data" aber es kommt imemr die oben genannte Fehlermeldung
dann müsste man erstmal wissen was du mit der eingabezeile machst. Denn diese meldung kommt micht vom SQL-Sever (du bist doch der jenige mit dem SQL-Server?)
hi Peter, hab mir en kleines DatGrid mit nem Table gebaut. der Code sieht wie folgt aus
1 | DataView dv; |
2 | public DataGridFilterForm() |
3 | {
|
4 | InitializeComponent(); |
5 | |
6 | dv = new DataView(dataTable1); |
7 | |
8 | dataGridView1.DataMember = ""; |
9 | dataGridView1.DataSource = dv; |
10 | |
11 | dataTable1.Rows.Add("00:00:00", "Mitternacht"); |
12 | dataTable1.Rows.Add("06:00:00", "Frühstück"); |
13 | dataTable1.Rows.Add("12:00:00", "Mittag"); |
14 | |
15 | }
|
16 | |
17 | private void textBox1_Leave(object sender, EventArgs e) |
18 | {
|
19 | dv.RowFilter = textBox1.Text; |
20 | }
|
In der TextBox gebe ich dann meine SQL Abfrage ein Gruß Agit
> select * from Data
Data ist doch eine Spalte und keine Tabelle, die heisst scheinbar D.
Nenne sie halt "Tabelle".
Agit A. schrieb: > In der TextBox gebe ich dann meine SQL Abfrage ein der RowFilter kann kein SQL. http://msdn.microsoft.com/en-us/library/system.data.dataview.rowfilter.aspx
hi, MaWin schrieb: > Data ist doch eine Spalte und keine Tabelle, die heisst scheinbar D. Ja hast recht. Meien tabelle heißt Table1 und die Spalten heißen Time, DeviceName und Data. Dann müsste doch folgende Anweisung richtig sein. "Select * From Table1 Where DeviceName Like COM%" aber da kommt wieder der Fehler, dass nach Table1 ein Operator vermisst wird. Gruß Agit
Agit A. schrieb: > aber da kommt wieder der Fehler, dass nach Table1 ein Operator vermisst > wird. hast du die Antwort von __tom (Gast) nicht gelesen?
hi, Kommen vor dem Select ein " oder ein ' ? also "Select oder 'Select Gruß Agit
__tom schrieb: > Agit A. schrieb:> In der TextBox gebe ich dann meine SQL Abfrage einder RowFilter kann kein SQL.http://msdn.microsoft.com/en-us/library/system.dat... __tom schrieb: > Agit A. schrieb:> In der TextBox gebe ich dann meine SQL Abfrage einder RowFilter kann kein SQL.http://msdn.microsoft.com/en-us/library/system.dat... __tom schrieb: > Agit A. schrieb:> In der TextBox gebe ich dann meine SQL Abfrage einder RowFilter kann kein SQL.http://msdn.microsoft.com/en-us/library/system.dat... __tom schrieb: > Agit A. schrieb:> In der TextBox gebe ich dann meine SQL Abfrage einder RowFilter kann kein SQL.http://msdn.microsoft.com/en-us/library/system.dat...
Hi, ich denke Deine Abfrage müßte in etwa so aussehen:
1 | private void textBox1_Leave(object sender, EventArgs e) |
2 | {
|
3 | connect = new SqlConnection("Data Source=" + DBSERVER + "; |
4 | Initial Catalog=DATENBANKNAME;
|
5 | Integrated Security=sspi;
|
6 | Connection Timeout=100"); |
7 | |
8 | connect.Open(); |
9 | SqlCommand sqlCommand = new SqlCommand("", connect); |
10 | |
11 | sqlCommand.CommandText = textBox1.Text; // Deine Eingabe -> SELECT * FROM Tabele1 |
12 | |
13 | SqlDataReader result = sqlCommand.ExecuteReader(); |
14 | while (result.Read()) |
15 | {
|
16 | dataGridView.Rows.Add(result[0], // Spalte Time |
17 | result[1], // Spalte DeviceName |
18 | result[2]); // Spalte Data |
19 | }
|
20 | result.Close(); |
21 | connect.Close(); |
22 | }
|
Gruß
Der ConnectionString geht natürlich auch so:
1 | connect = new SqlConnection("Data Source=DBSERVER; |
2 | Initial Catalog=DATENBANKNAME;
|
3 | Integrated Security=sspi;
|
4 | Connection Timeout=100"); |
Gruß
Andreas schrieb: > Der ConnectionString geht natürlich auch so: > ... Schau dir mal SqlConnectionStringBuilder an. Das geht viel einfacher. http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlconnectionstringbuilder(v=vs.80).aspx Und wenn du schon ein DataGridView benutzt würde ich auf ADO.NET zurückgreifen. DataTable und Co.
hi, Simon K. schrieb: > Und wenn du schon ein DataGridView, Ja tue ich. Ich hab einfach Probleme mit der SQL abfragemehr nicht denke ich. Gruß Agit
Hi, hab hier mal die gesamte Klasse:
1 | namespace ManualGUI |
2 | {
|
3 | public partial class DataGridFilterForm : Form |
4 | {
|
5 | class MyObject |
6 | {
|
7 | public DateTime dt; |
8 | public object Tag; |
9 | public override string ToString() |
10 | {
|
11 | return dt.ToString(); |
12 | }
|
13 | //public SMSC.NISTB.Configuration.Connector Connector;
|
14 | //public byte[] Data;
|
15 | }
|
16 | |
17 | DataView dv; |
18 | public DataGridFilterForm() |
19 | {
|
20 | InitializeComponent(); |
21 | |
22 | dv = new DataView(dataTable1); |
23 | |
24 | dataGridView1.DataMember = ""; |
25 | dataGridView1.DataSource = dv; |
26 | |
27 | dataTable1.Rows.Add("00:00:00", "Mitternacht"); |
28 | dataTable1.Rows.Add("06:00:00", "Frühstück"); |
29 | dataTable1.Rows.Add("12:00:00", "Mittag"); |
30 | MyObject mt = new MyObject(); |
31 | mt.dt = DateTime.Now; |
32 | mt.Tag = this; |
33 | dataTable1.Rows.Add(mt, mt); // Wenn diese zeiel auskommentiert ist funktioniert der Filter. |
34 | //timer1.Enabled = true;
|
35 | dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; |
36 | }
|
37 | |
38 | private void textBox1_Leave(object sender, EventArgs e) |
39 | {
|
40 | try
|
41 | {
|
42 | dv.RowFilter = textBox1.Text; |
43 | //dv.RowFilter = Data LIKE 'M*'
|
44 | }
|
45 | catch (Exception ex) |
46 | {
|
47 | MessageBox.Show(ex.Message); |
48 | }
|
49 | }
|
50 | |
51 | private void timer1_Tick(object sender, EventArgs e) |
52 | {
|
53 | dataTable1.Rows.Add(DateTime.Now.ToString(), DateTime.Now.Ticks.ToString()); |
54 | if (timer1.Interval > 50) |
55 | {
|
56 | timer1.Interval /= 2; |
57 | }
|
58 | dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 2].Cells[0]; |
59 | }
|
60 | |
61 | private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) |
62 | {
|
63 | |
64 | object o = dataGridView1[e.ColumnIndex, e.RowIndex].Value; |
65 | if (o is MyObject) |
66 | {
|
67 | MyObject mt = (MyObject)o; |
68 | MessageBox.Show(mt.Tag.GetType().Name); |
69 | //mt.Connector.Send(mt.Data);
|
70 | }
|
71 | }
|
72 | |
73 | |
74 | }
|
75 | }
|
Meine Anweisungen (z.B. Data LIKE 'M*') klappen nun mit der Textbox, aber nur wenn ich dataTable1.Rows.Add(mt, mt); (siehe Code) nicht mache. Wenn diese Zeile dabei ist kommte olgende Fehlermeldeung "Cannot perform 'Like' operation on ManualGUI.MyObject and System.String" Was bedeutet das und wieso geht es wenn ich MyObject nicht in die Zeile einfüge. Vielen Dank Gruß Agit
Hi Leute, Hab das Problem gefunden. Die Typen stimmen nicht überein. mt ist vom Typ object und die tabelle erwartet einen String. dataTable1.Rows.Add(mt, mt) -> dataTable1.Rows.Add(mt.ToString(), mtToString()) So gehts. Danke für die Tipps. Gruß Agit
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.