Toon posts:

[C++ Builder] Access Database en Zoeken

Pagina: 1
Acties:
  • 150 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben bezig met het maken van een klantenadministratie programma in Borland C++ Builder 6.
Dit programma maakt verbindingen met een Access database dmv een ADO verbinding.
Het probleem is het volgende:
Alles lukt, het mooi weergeven in een DB grid, toevoegen, wijzigen en verwijderen. Alleen lukt het maar niet om een zoekfunctie te maken. Zou iemand me kunnen vertellen hoe ik dit aanpak?

  • Krooswijk.com
  • Registratie: Mei 2000
  • Laatst online: 17-08-2024
hmmmmz je bent wel al zover dat je hele systeem klaar is met INSERT, DELETE en UPDATE commando's maar geen simpele SELECT. het gaat er om dat je een zoekfunctie maakt in je programma die de SQL query op kan bouwen.

een klein vb in pseudocode kan zijn, waarbij de gebruiker zoekt op nr=1:
code:
1
2
3
var nr = textfield.getString( );
var sql = "SELECT * FROM my_db WHERE nummer="+nr;
var resultset = db_conn.execute( sql );

je kunt nu de resultset tonen, met de gevonden nummers. ik neem aan dat je er dan verder zelf wel uit kan komen...

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Zoals Da Snake al zegt: je zult een SELECT query moeten bouwen.

Echter, in C++ Builder kan je die SELECT string veel beter opbouwen dan in VB (denk ik). In C++ Builder kan je nl. gebruik gaan maken van parameters:

code:
1
2
3
4
Query1.Close();
Query1.SQL.Text = "SELECT * FROM TABLE WHERE naam = :p_Naam";
Query1.ParamByName ("p_Naam").AsString = "whoami";
Query1.Open();

https://fgheysels.github.io/


Verwijderd

Topicstarter
Het lukt me nu om een sql query te doen, maar het lukt nog niet om deze achter een knop te krijgen, weet iemand zo wat hier fout is?
Ik ben er namelijk al heeel lang mee aan het klooien... :(

code:
1
2
3
  Query1->SQL->Text = "SELECT * FROM product_gegevens WHERE product_nummer = '0142'";
  Query1->Active = true;
  DataSource1->DataSet->Active;

[ Voor 10% gewijzigd door Verwijderd op 17-03-2003 10:19 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:37
Wat lukt er dan niet?
Welke fout krijg je?
Wat gebeurt er? Wat gebeurt er niet?

Als product_nummer een numerieke column is, dan mag je geen quotes rond 0142 zetten.

https://fgheysels.github.io/


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Verwijderd schreef op 17 March 2003 @ 10:18:
code:
1
2
3
  Query1->SQL->Text = "SELECT * FROM product_gegevens WHERE product_nummer = '0142'";
  Query1->Active = true;
  DataSource1->DataSet->Active;
Eerst je Query sluiten (Query1->Close) en die laatste regel is een beetje dubbelop.

Of gewoon een TDataSet.Locate gebruiken om in een resultset naar de juiste record te springen...

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Verwijderd schreef op 17 March 2003 @ 10:18:
...
code:
1
2
3
  Query1->SQL->Text = "SELECT * FROM product_gegevens WHERE product_nummer = '0142'";
  Query1->Active = true;
  DataSource1->DataSet->Active;
Gebruik ook het liefst de methode ->Open(); ipv active op true zetten.
Dit geldt alleen voor het Query component: DataSource kent dit niet :)
Pagina: 1