Autor |
Beitrag |
bobi
      
Beiträge: 45
Windoof XP Pro.
Delphi 2006 .NET
|
Verfasst: Fr 22.06.07 10:05
Hi, wenn ich bei einer Oracle SQL Abfrage alle Daten wieder in die verschiedenen TextBoxen schreiben will, wie kann ich das am besten realisieren?
Das was da jetzt rauskommen würde, möchte ich gerne wieder in meine TextBoxen schreiben.
Mein Erster Versuch
Delphi-Quelltext 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:
| procedure TWinForm_Inventar_Suche.Button3_Click(sender: System.Object; e: System.EventArgs); var rw : DataRow; begin oda:=OracleDataAdapter.Create('Select * from '+db1+' where systemname '+TextBox1.Text, conn); ocb:=OracleCommandBuilder.Create(oda); ds := DataSet.Create (db1);
ds.Clear; conn.Open; oda.Fill(ds, db1); dt := ds.Tables [db1]; conn.Close;
TextBox1.Text := ['Systemname']; TextBox2.Text := ['Benutzer']; TextBox3.Text := ['Inventarnr']; TextBox4.Text := ['Standort']; TextBox5.Text := ['Abteilung']; TextBox6.Text := ['Raum']; TextBox7.Text := ['Produkt']; TextBox8.Text := ['Hersteller']; TextBox9.Text := ['Seriennummer']; TextBox10.Text := ['Lieferant']; TextBox11.Text := ['Lieferdatum']; RichTextBox1.Text := ['Bemerkung']; TextBox12.Text := ['Leasingbeginn']; TextBox13.Text := ['Leasingende']; TextBox14.Text := ['Leasingnr']; end; |
MFG: bobi
|
|
JensLaskowski
      
Beiträge: 168
Win XP
BDS 2006 Architect
|
Verfasst: Fr 22.06.07 16:52
Benutze doch mal die Methode FieldByName
Dies würde dann so aussehen:
Delphi-Quelltext 1:
| TextBox1.Text := Query.FieldByName('Systemname').AsString; |
Dann müsste es eigentlich gehen.
Mit freundlichen Grüßen
JensLaskowski
_________________ Nichtstun macht nur dann Spaß, wenn man eigentlich viel zu tun hätte.
|
|
bobi 
      
Beiträge: 45
Windoof XP Pro.
Delphi 2006 .NET
|
Verfasst: Mo 25.06.07 09:29
Das habe ich jetzt mal versucht, aber dabei entsteht ein weiteres Problem.
Sobald ich nun eine Abfrage starte und diese dann halt in die einzelnen TextBoxen schreiben möchte ( mit diesen Befehl) kommt diese Fehlermeldung:
„Exception-Klasse System.NullReferenceException mit Meldung ‚Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.’“
|
|
JensLaskowski
      
Beiträge: 168
Win XP
BDS 2006 Architect
|
Verfasst: Mo 25.06.07 13:05
Könntest du mal den Code posten, dann kann ich das auch nachvollziehen.
Mit freundlichen Grüßen
JensLaskowski
_________________ Nichtstun macht nur dann Spaß, wenn man eigentlich viel zu tun hätte.
|
|
bobi 
      
Beiträge: 45
Windoof XP Pro.
Delphi 2006 .NET
|
Verfasst: Mo 25.06.07 13:08
Delphi-Quelltext 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:
| procedure TWinForm_Inventar_Suche.Button3_Click(sender: System.Object; e: System.EventArgs); begin oda:=OracleDataAdapter.Create('Select * from '+db1+' where systemname ='+hk+TextBox1.Text+hk, conn); ocb:=OracleCommandBuilder.Create(oda); ds := DataSet.Create (db1);
ds.Clear; conn.Open; oda.Fill(ds, db1); dt := ds.Tables [db1]; conn.Close;
TextBox1.Text := Query.FieldByName('Systemname').AsString; TextBox2.Text := Query.FieldByName('Benutzer').AsString; TextBox3.Text := Query.FieldByName('Inventarnr').AsString; TextBox4.Text := Query.FieldByName('Standort').AsString; TextBox5.Text := Query.FieldByName('Abteilung').AsString; TextBox6.Text := Query.FieldByName('Raum').AsString; TextBox7.Text := Query.FieldByName('Produkt').AsString; TextBox8.Text := Query.FieldByName('Hersteller').AsString; TextBox9.Text := Query.FieldByName('Seriennummer').AsString; TextBox10.Text := Query.FieldByName('Lieferant').AsString; TextBox11.Text := Query.FieldByName('Lieferdatum').AsString; RichTextBox1.Text := Query.FieldByName('Bemerkung').AsString; TextBox12.Text := Query.FieldByName('Leasingbeginn').AsString; TextBox13.Text := Query.FieldByName('Leasingende').AsString; TextBox14.Text := Query.FieldByName('Leasingnr').AsString; end; |
|
|
JensLaskowski
      
Beiträge: 168
Win XP
BDS 2006 Architect
|
Verfasst: Mo 25.06.07 18:18
bobi hat folgendes geschrieben: | Delphi-Quelltext 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:
| procedure TWinForm_Inventar_Suche.Button3_Click(sender: System.Object; e: System.EventArgs); begin oda:=OracleDataAdapter.Create('Select * from '+db1+' where systemname ='+hk+TextBox1.Text+hk, conn); ocb:=OracleCommandBuilder.Create(oda); ds := DataSet.Create (db1);
ds.Clear; conn.Open; oda.Fill(ds, db1); dt := ds.Tables [db1]; conn.Close;
TextBox1.Text := Query.FieldByName('Systemname').AsString; TextBox2.Text := Query.FieldByName('Benutzer').AsString; TextBox3.Text := Query.FieldByName('Inventarnr').AsString; TextBox4.Text := Query.FieldByName('Standort').AsString; TextBox5.Text := Query.FieldByName('Abteilung').AsString; TextBox6.Text := Query.FieldByName('Raum').AsString; TextBox7.Text := Query.FieldByName('Produkt').AsString; TextBox8.Text := Query.FieldByName('Hersteller').AsString; TextBox9.Text := Query.FieldByName('Seriennummer').AsString; TextBox10.Text := Query.FieldByName('Lieferant').AsString; TextBox11.Text := Query.FieldByName('Lieferdatum').AsString; RichTextBox1.Text := Query.FieldByName('Bemerkung').AsString; TextBox12.Text := Query.FieldByName('Leasingbeginn').AsString; TextBox13.Text := Query.FieldByName('Leasingende').AsString; TextBox14.Text := Query.FieldByName('Leasingnr').AsString; end; | |
Wenn ich das so richtig sehe, holst du dir die Daten mit einem DataSet aus der Tabelle. Oder teusche ich mich da??
Wenn das so ist, musst du Query durch den Namen deines DataSets ersetzen. Was anderes fällt mir jetzt auf die schnelle nicht auf.
Das Query war nur ein Beispiel von mir.
Mit freundlichen Grüßen
JensLaskowski
_________________ Nichtstun macht nur dann Spaß, wenn man eigentlich viel zu tun hätte.
|
|
bobi 
      
Beiträge: 45
Windoof XP Pro.
Delphi 2006 .NET
|
Verfasst: Di 26.06.07 08:26
Also ich habe das dann mal mit dem DataSet versucht, es will einfach nicht funktionieren.
Wenn ich ganz normal meinen DataSet nehme, kennt er keine FieldByName und wenn ich TDataSet schreibe, bekomme ich nur eine Fehlermeldung:
„Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt“
Ich weiß da in Moment nicht weiter.
Mit freundlichen Grüßen: bobi
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 26.06.07 09:42
@Jens:
bobi programmiert mit .NET. Die DataSets sind dort anders zu handhaben.
@bobi:
Schau Dir doch erstmal die Hilfe zu den DataSets an. Ich meine, dass dort auch Beispiele sind.
Hier noch ein Buchtipp:
www.jasocul.de/html/delphi_2005.html
Datenbanken mit .NET sind einfach zum Kotzen und nicht zu empfehlen
|
|
bobi 
      
Beiträge: 45
Windoof XP Pro.
Delphi 2006 .NET
|
Verfasst: Di 26.06.07 11:12
Erstmal danke für die Hilfe, ich glaube sonst würde ich langsam am Rad drehen.
Ja das es bei .NET ein wenig anders ist, habe ich dann auch feststellen müssen.
Ich habe das Problem jetzt ein wenig anders gelöst, zum sieht es so aus als würde es so funktionieren.
Ich habe zwar jetzt noch ein anderes Problem, aber ich denke mal das liegt an etwas anderem.
MFG: bobi
|
|
bobi 
      
Beiträge: 45
Windoof XP Pro.
Delphi 2006 .NET
|
Verfasst: Mi 27.06.07 10:16
Nach lagen hin und her habe ich dann doch endlich die richtige Lösung gefunden, ich habe sie mir mehr oder weniger zusammengebastelt.
Für das Archiv wollte ich diese mal hier Posten, falls noch weitere Leute das gleiche Problem haben.
Delphi-Quelltext 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:
| procedure TWinForm_Inventar_Suche.Button4_Click(sender: System.Object; e: System.EventArgs); begin oda:=OracleDataAdapter.Create('Select * from '+db1+' where inventarnr ='+hk+TextBox3.Text+hk, conn); ocb:=OracleCommandBuilder.Create(oda); ds := DataSet.Create (db1);
ds.Clear; conn.Open; oda.Fill(ds, db1); dt := ds.Tables [db1]; conn.Close;
TextBox1.Text := dt.Rows[0]['Systemname'] as String; TextBox2.Text := dt.Rows[0]['Benutzer'] as String; TextBox3.Text := dt.Rows[0]['Inventarnr'] as String; TextBox4.Text := dt.Rows[0]['Standort'] as String; TextBox5.Text := dt.Rows[0]['Abteilung'] as String; TextBox6.Text := dt.Rows[0]['Raum'] as String; TextBox7.Text := dt.Rows[0]['Produkt'] as String; TextBox8.Text := dt.Rows[0]['Hersteller'] as String; TextBox9.Text := dt.Rows[0]['Seriennummer'] as String; TextBox10.Text := dt.Rows[0]['Lieferant'] as String; TextBox11.Text := dt.Rows[0]['Lieferdatum'] as String; RichTextBox1.Text := dt.Rows[0]['Bemerkung'] as String; TextBox12.Text := dt.Rows[0]['Leasingbeginn'] as String; TextBox13.Text := dt.Rows[0]['Leasingende'] as String; TextBox14.Text := dt.Rows[0]['Leasingnr'] as String; end; |
MFG: bobi
|
|