[VB 6.0] Waardes in DB aanpassen

Pagina: 1
Acties:

  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Graag zou ik via een open database connectie de waarden van een kolom in een tabel in mijn access/sql db willen aanpassen.

Het gaat om het volgende: ik ben bezig een tool te maken, waarbij je een db kan selecteren, vervolgens een tabel en een kolom. Tevens geef je een search-string op en een replace-string.
Wanneer je op een knop drukt zou hij in de geselecteerde db/tabel/kolom de ingevulde waarde aan moeten passen naar de nieuwe waarde.

Als ik bijvoorbeeld als search-string "waarde1" en in de replace-string "waarde2" heb staan, moet de app in alle velden in de kolom de waarde "waarde1" vervangen door "waarde2".

Dit wil ik oplossen (denk ik, als jullie denken dat ik het beter anders kan doen, hoor ik dat graag) door een open connectie naar de db te leggen en dan iets doen als volgt.

code:
1
rsFields("Field") = Replace(rsFields("Field", waarde1, waarde2)


Ik heb eigenlijk geen idee of en hoe dit mogelijk is. Ik heb op GoT en Google gezocht, maar zal wel op de verkeerde zoekwoorden zoeken, want ik vind er niets over.

Weet iemand hoe ik dit voor elkaar kan krijgen???

Verwijderd

Als ik jou was zou ik maar eens snel naar SQL gaan zoeken :). Dan doe je iets van UPDATE tabelletje SET Kolommetje = 'Blaat' WHERE Kolommetje = 'Schaap'.

Over SQL is genoeg te vinden.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Ik kan alleen maar KoenM bijtreden. Manipulatie van gegevens in een databank doe je het best via SQL.
Ziehier voor een tutorial

https://fgheysels.github.io/


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 23-08 16:22

pistole

Frutter

De manier die NTGiant wilt gebruiken kan ook prima werken, vooropgesteld dat je de recordset op de juiste manier opent (updateable, etc)

Overigens gebruik ik deze methode nooit, maar het moet wel kunnen.
Heb je al een bij MSDN gekeken?

Ik frut, dus ik epibreer


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
pistole schreef op 08 March 2003 @ 11:37:
De manier die NTGiant wilt gebruiken kan ook prima werken, vooropgesteld dat je de recordset op de juiste manier opent (updateable, etc)

Overigens gebruik ik deze methode nooit, maar het moet wel kunnen.
Heb je al een bij MSDN gekeken?


Het kan werken idd, maar ik vind toch dat de SQL-manier de te preferen manier is.

https://fgheysels.github.io/


  • pistole
  • Registratie: Juli 2000
  • Laatst online: 23-08 16:22

pistole

Frutter

whoami schreef op 08 maart 2003 @ 11:48:

[...]


Het kan werken idd, maar ik vind toch dat de SQL-manier de te preferen manier is.
ja op zich wel (ik doe het altijd op die manier) maar er zijn vast situaties waarbij het updaten van een recordset efficiënter / handiger is.

Die keuze ligt bij NTGiant, m.i.

Ik frut, dus ik epibreer


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
Ik weet dat het idd via SQL kan, maar om dat te doen moet ik volgens mij veel meer query's naar de database laten gaan..

Het probleem (denk ik) bij een SQL query is het volgende:
- Ik weet helaas niet of een tabel een uniek ID heeft, waarop ik de update kan koppelen
(UPDATE SET *** WHERE ID = x)
- Tevens staan in alle velden van die kolom andere waardes. Volgens mij lukt het dan ook niet makkelijk om een update te doen? of wel soms?

Het probleem is namelijk dat elke db (Access of MSSQL) aan de app gekoppeld kan worden, om een van de kolommen een bepaalde string in een veld aan te passen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
[nohtml]
NTGiant schreef op 09 March 2003 @ 10:31:
Ik weet dat het idd via SQL kan, maar om dat te doen moet ik volgens mij veel meer query's naar de database laten gaan..
Waarom denk je dat?
Hoe werkt die UpdateFields ofzo intern?
Het probleem (denk ik) bij een SQL query is het volgende:
- Ik weet helaas niet of een tabel een uniek ID heeft, waarop ik de update kan koppelen
(UPDATE SET *** WHERE ID = x)
Hoezo je weet niet of de records in de tabel een uniek id hebben?
Dat kan je toch zien? En als er geen PK is, dan leg je er toch gewoon een?
Trouwens, je kan ook doen:
code:
1
update tabel set veld = waarde where veld = x and veld = x and veld = x...
- Tevens staan in alle velden van die kolom andere waardes. Volgens mij lukt het dan ook niet makkelijk om een update te doen? of wel soms?
Wat bedoel je precies?

https://fgheysels.github.io/


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
--------------------------------------------------------------------------------
NTGiant schreef op 09 March 2003 @ 10:31:
Ik weet dat het idd via SQL kan, maar om dat te doen moet ik volgens mij veel meer query's naar de database laten gaan..


--------------------------------------------------------------------------------

Waarom denk je dat?
Hoe werkt die UpdateFields ofzo intern?
Aangezien ik dan voor elke veld in de kolom een update query moet doen.
Hoezo je weet niet of de records in de tabel een uniek id hebben?
Dat kan je toch zien? En als er geen PK is, dan leg je er toch gewoon een?
Trouwens, je kan ook doen:
code:
1
update tabel set veld = waarde where veld = x and veld = x and veld = x...


[...]

Wat bedoel je precies?
Aangezien iemand die de app straks gebruikt enkele willekeurig db in de app kan selecteren, weet ik niet welke kolom de unieke kolom is (als die er al is).

Maar volgens mij ben ik allemaal veel te moeilijk aan het denken...

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Maar volgens mij ben ik allemaal veel te moeilijk aan het denken...
Dat denk ik inderdaad ook. Je hoeft toch niet de al dan niet unieke ID te weten om alle velden aan te passen waar een bepaalde waarde voorkomt? Je kunt gewoon zeggen "pas alle velden aan waar de waarde x in staat, en zet daar waarde y in!" Dat is simpel genoeg vertaald naar SQL.

Om het dan dynamisch te maken zoals jij wil zul je alleen de veldnamen, de tabelnaam, de te zoeken waarde en de nieuwe waarde dynamisch in VB in de code in de SQL-string moeten zetten. Maar aangezien ik begreep dat je dat vanuit de app laat kiezen, lijkt me ook dat geen probleem. Dan krijg je zoiets als

Visual Basic .NET:
1
2
 SQLstr = "Update " & TextBoxTabel & " set " & TextBoxVeldnaam & " = " & TextBoxNieuweWaarde
           & " where " & TextBoxVeldnaam & " = " & TextBoxZoekwaarde

[ Voor 17% gewijzigd door OZ-Gump op 09-03-2003 18:03 . Reden: typo ]

My personal website


  • DukeMan
  • Registratie: Mei 2000
  • Niet online
OZ-Gump schreef op 09 March 2003 @ 18:01:
...

Visual Basic .NET:
1
2
 SQLstr = "Update " & TextBoxTabel & " set " & TextBoxVeldnaam & " = " & TextBoxNieuweWaarde
           & " where " & TextBoxVeldnaam & " = " & TextBoxZoekwaarde
Dit kan ik idd gebruiken. Ik moet dit dan alleen even voor alle records in de db, aangezien er in de strings iets aangepast dient te worden.

het zal dus iets als volgt worden;
Visual Basic .NET:
1
2
3
4
 
SQLstr = "Update " & TextBoxTabel & " set " & TextBoxVeldnaam & " = " & 
                Replace(rsRecords(TextBoxVeldNaam), TextBoxZoekWaarde, TextBoxNieuweWaarde)
           & " where " & TextBoxVeldnaam & " = " & rsRecords(TextBoxVeldNaam)


Aangezien alle records verschillende zijn , en in de tekst in het record een bepaalde zoekterm vervangen dient te worden.

[ Voor 13% gewijzigd door DukeMan op 09-03-2003 22:01 ]

Pagina: 1