Toon posts:

[C++] ADOQuery en CommandText

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hi,

Bij het maken van een 'database project' in BCB 6 stuit ik steeds tegen twee problemen aan.
Ik heb via een ADO connectie verbinding gemaakt met een MS ACCESS database en lees dit uit via een DataSource in een DBGrid.
Ook maak ik gebruik van een ADOQuery waarmee ik Query's uitvoer. Dit houdt onder andere in toevoegen, verwijderen en sorteren [INSERT INTO, DELETE FROM, ORDER BY].

Het probleem is als volgt, ik voer een Query uit, en na het drukken op de Button [de code zit onder de event handler van de button] Krijg ik meteen een pop-up met de waarschuwing:

ADOQuery1: CommandText does not return a result set

Het rare is alleen, de Query wordt wel degelijk uitgevoerd, maar ik zit met dat vervelende pop-up venster steeds.
Hoe zou ik die CommandText een result set kunnen meegeven? Ik heb al een aantal dingen geprobeerd met een ADOCommand maar dat werkt steeds niet.

Mijn tweede probleem:
In de DBGrid [waar hij dus de inhoud van de tabel laat zien] zie ik alleen de data uit de database die vóór het opstarten van het programma van toepassing was. Voeg ik dus een record toe, dan update deze zich niet.
Is er een mogelijkheid om dit zeg maar te 'refreshen' binnen het programma?

Alvast bedankt!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:00
Een INSERT / Update / DELETE query moet je uitvoeren door een andere method aan te roepen dan dat je een SELECT query zou uitvoeren(die wel een resultset returned).

Met de BDE objecten heette de method die je moest uitvoeren voor insert/update/delete queries ExecSQL, en voor SELECT queries was dat 'Open'.
Hoe die method precies heet bij die ADO objecten weet ik niet, maar dat is wel de richting waarin je moet zoeken.

Staat trouwens hoogstwaarschijnlijk in de help/docs

Voor je 2de probleem: je resultset refreshen als je iets toegevoegd hebt.

[ Voor 8% gewijzigd door whoami op 22-05-2005 10:24 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op zondag 22 mei 2005 @ 10:24:
Een INSERT / Update / DELETE query moet je uitvoeren door een andere method aan te roepen dan dat je een SELECT query zou uitvoeren(die wel een resultset returned).
Maar hoe zorg ik dan dat die [uitgevoerde] Query ook daadwerkelijk zichtbaar wordt in mijn DBGrid / DataSource ? [SELECT]

Mbv ADOCommand kan ik een CommandText setten, dit is gewoon een SQL Query [Bijv: SELECT * FROM tabel ORDER BY id ASC;]
Maar dan nog steeds krijg ik dezelfde error 8)7

Verwijderd

Topicstarter
Niemand die een oplossing toevallig weet? :) Alvast bedankt!

  • Belgar
  • Registratie: Januari 2002
  • Laatst online: 22-09-2025

Belgar

Archmaster ranzige code..

ADOQuery gebruiken ?
Use TADOQuery to access one or more tables in a data store using SQL statements.

Retrieve data from tables in an ADO data store using SELECT statements. Perform actions on tables and other metadata objects in an ADO data store with statements like INSERT, DELETE, UPDATE, ALTER TABLE, and CREATE TABLE. Execute stored procedures.

...Als het maar werkt


Verwijderd

Topicstarter
Ik gebruik het volgende:

ADOQuery1->Close();
ADOQuery1->SQL->Clear();

ADOQuery1->SQL->Add("UPDATE dvd SET Titel = '" + (DBEdit1->Text) + "', Jaar = '" + (DBEdit2->Text) + "', Genre = '" + (DBComboBox1->Text) + "', Acteurs = '" + (DBEdit3->Text) + "', Filmmaatschappij = '" + (DBEdit4->Text) + "' WHERE id = " + (DBEdit5->Text) + "");
ADOQuery1->ExecSQL();
//ADOQuery1->Open(); geeft hetzelfde effect
ADOQuery1->Active = true;

Query's werken perfect.. hij update ze alleen niet in het programma zelf en ik krijg die error 8)7
Pagina: 1