[Delphi/e.a.] Database perikelen

Pagina: 1
Acties:

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
Ik heb een MS Access databeestje met twee tabellen...

De eerste tabel heeft een aantal velden waavan 1 een nummertje heeft. Dit nummertje komt ook in tabel 2 voor. Tabel twee heeft daarnaast een memo-veld.
De relatie van tabel 1 en 2 is 1 op 1.

Nu wil ik in een DBGrid de volledige tabel 1 laten zien maar het nummertje vervangen door de memo van tabel 2.
So far so good, een leuke join zorgt dat dat allemaal keurig getoond wordt, maar ik kan het dan niet editten.

Heeft iemand een goede oplossing (ik dacht aan het zelf aanpassen van het DBGrid zodat ik elke kolom handmatig op een tabel/veld aan kan sluiten, maar dat is veel werk).

Cogito Ergo Credo


Verwijderd

Dit is denk ik meer een SQL verhaaltje..

Je mag neit elke join zomaar editen, daar zijn regels voor. Alle joins moeten inner joins zijn geloof ik, ken die regels niet uit m'n hoofd.

Kijk eens naar het updatesql (oid) component, daarmee zou het wel moeten kunnen. mbv. dat component kun je verschillende queries opgeven, ook voor het editen b.v.

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
Op Sunday 09 December 2001 13:28 schreef hezik het volgende:
Dit is denk ik meer een SQL verhaaltje..

Je mag neit elke join zomaar editen, daar zijn regels voor. Alle joins moeten inner joins zijn geloof ik, ken die regels niet uit m'n hoofd.

Kijk eens naar het updatesql (oid) component, daarmee zou het wel moeten kunnen. mbv. dat component kun je verschillende queries opgeven, ook voor het editen b.v.
Dat lijkt idd de oplossing, weet je waar ik goede voorbeelden kan krijgen om dit met Access en D6 Enterprise voor elkaar te krijgen?

Cogito Ergo Credo


  • whoami
  • Registratie: December 2000
  • Nu online
Op Sunday 09 December 2001 13:24 schreef jopiek het volgende:
Ik heb een MS Access databeestje met twee tabellen...

De eerste tabel heeft een aantal velden waavan 1 een nummertje heeft. Dit nummertje komt ook in tabel 2 voor. Tabel twee heeft daarnaast een memo-veld.
De relatie van tabel 1 en 2 is 1 op 1.

Nu wil ik in een DBGrid de volledige tabel 1 laten zien maar het nummertje vervangen door de memo van tabel 2.
So far so good, een leuke join zorgt dat dat allemaal keurig getoond wordt, maar ik kan het dan niet editten.

Heeft iemand een goede oplossing (ik dacht aan het zelf aanpassen van het DBGrid zodat ik elke kolom handmatig op een tabel/veld aan kan sluiten, maar dat is veel werk).
Wat bedoel je precies? Je krijgt kolommen te zien in die DBGrid die je liever niet zout zien?
Indien dit je probleem is, kan je gewoon rechts klikken op uw DBGrid en in het pop-up menu dat dan verschijnt voor "Columns Editor" kiezen. Dan krijg je een venstertje te zien en er is daar een knopje "Add all fields". Daar klik je op en dan selecteer en verwijder je de kolommen die je niet wilt zien.

https://fgheysels.github.io/


  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
Op Sunday 09 December 2001 21:22 schreef whoami het volgende:

[..]

Wat bedoel je precies? Je krijgt kolommen te zien in die DBGrid die je liever niet zout zien?
Indien dit je probleem is, kan je gewoon rechts klikken op uw DBGrid en in het pop-up menu dat dan verschijnt voor "Columns Editor" kiezen. Dan krijg je een venstertje te zien en er is daar een knopje "Add all fields". Daar klik je op en dan selecteer en verwijder je de kolommen die je niet wilt zien.
Ja, dat wist ik na 4,5 jaar delphi proggen ook wel... Ik begrijp dat lezen nog steeds moeilijk is en denken ook. Je denkt toch zeker niet dat ik een join ga doen om juist minder velden te krijgen?! Het eerste stuk is 100% duidelijk uitgelegd... En nu hezik met het idee van een updatesql procedure komt zou ik graag daar meer over willen weten... (niet als flame bedoeld maar |:( is wel op z'n plaats) Nog nooit van een relationele database gehoord geloof ik...

Zo wellicht duidelijker???

Afbeeldingslocatie: http://213.46.36.137/reldb.jpg

Ik beperk me eerst maar ff tot initative en initcont, op het scherm in het grid wil ik dus initiativeid, InitCont.Content, additionalhtml en bijv. isready laten tonen. Daar heb ik een mooie goed werkende SQL query voor, het probleem is dan alleen dat ik niet zo maar gegevens kan wijzigen of toevoegen omdat het een read-only dataset is...

Cogito Ergo Credo


Verwijderd

Plaats een TQuery ergens en zet er een TUpdateSQL naast.

Zet bij te TQuery de 'UpdateObject' property naar de TUpdateSQL.

Daarna moet je vier queries maken.
• ophalen records (heb je al)
• modify (edit) record (wil je)
• insert record
• delete record

De 1e query ken je toe aan TQuery, en de rest verdeel je op logische wijze over TUpdateSQL :)

Zoiets komt in de buurt, maar bekijk ook zeker de helpfile van Delphi eens, die is beter dan je denkt..

  • whoami
  • Registratie: December 2000
  • Nu online
Op zondag 09 december 2001 22:27 schreef jopiek het volgende:

[..]

Ja, dat wist ik na 4,5 jaar delphi proggen ook wel... Ik begrijp dat lezen nog steeds moeilijk is en denken ook. Je denkt toch zeker niet dat ik een join ga doen om juist minder velden te krijgen?! Het eerste stuk is 100% duidelijk uitgelegd...
Ja sorry hé. Als je niet kunt verdragen dat mensen hier uw vraag niet goed of verkeerd begrijpen moet je uw vraag hier maar niet posten ook. (En zeker niet als je uw probleem nog niet kunt formuleren).


Je zegt wel dat uw probleem 100% duidelijk uitgelegd is, maar dat is ze in het geheel niet! Moest dat wel het geval zijn, dan zou ik ze niet verkeerd opgevat hebben ook.
So far so good, een leuke join zorgt dat dat allemaal keurig getoond wordt, maar ik kan het dan niet editten.
-> Wat kun je dan niet editten? Wat is het?? Het kon ook slaan op uw Grid waar je bepaalde kolommen niet van wou zien, wat heel goed mogelijk is, ook al gebruik je een join.
En nu hezik met het idee van een updatesql procedure komt zou ik graag daar meer over willen weten...
Nog nooit van een Update SQL gehoord? En als je al 4.5 jaar in Delphi progt, dan veronderstel je toch al minstens eens gehoord te hebben van een TUpdateSQL component. Ik zeg niet dat je hem al eens moet gebruikt hebben, want als je een goed datamodel hebt heb je die normaal gezien niet nodig.
(niet als flame bedoeld maar |:( is wel op z'n plaats)
Ik aanzie dit wel als een flame.
Nog nooit van een relationele database gehoord geloof ik...
Nee hoor, echt niet. Ik heb nog maar 3 jaar werkervaring in IT en heb nog nooit een RDBMS gezien, laat staan er mee gewerkt te hebben.
En je begint hier ook maar uit je nek te lullen, want wat heeft dat nou te maken met het feit dat ik uw vraag verkeerd geinterpreteerd heb en over die Grid bezig was.

en voor de rest --> Ignore Jopiek.

https://fgheysels.github.io/


  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
Op maandag 10 december 2001 02:50 schreef hezik het volgende:
Plaats een TQuery ergens en zet er een TUpdateSQL naast.

Zet bij te TQuery de 'UpdateObject' property naar de TUpdateSQL.

Daarna moet je vier queries maken.
• ophalen records (heb je al)
• modify (edit) record (wil je)
• insert record
• delete record

De 1e query ken je toe aan TQuery, en de rest verdeel je op logische wijze over TUpdateSQL :)

Zoiets komt in de buurt, maar bekijk ook zeker de helpfile van Delphi eens, die is beter dan je denkt..
Ik heb dat updatesql component nog nooit gebruikt (in het verleden had ik SQL slechts nodig voor retrieval). Ik zag al dat je er die SQL statements aan kunt hangen, maar ik was niet zeker of dat gewone SQL insert/edit statements moeten zijn en hoe ik de invoer-params dan moet doen. Ik heb naast de help ook nog wel een paar goede boeken maar ja RTFM he, je moet het wel ff doen...
Er blijkt echter een probleem te zijn om dat ik niet de normale db componenten maar de KaDao versie gebruik (ik moet access gebruiken en alleen kadao kan daar op een fatsoenlijke manier mee om gaan)

B.t.w. sorry whoami dat het zo errug over kwam. Ik snap best dat het lezen van imeand anders z'n probleem wel een vrij lastig is. Ik had echter pas al een paar keer meegemaakt dat men bij een dergelijke vraag een antwoord gaf waaruit bleek dat mensen gewoon niet lezen en daarom antwoorde ik te scherp... Ik heb trouwens echt wel van het TUpdateSQL component gehoord, maar nooit gebruikt. Daarnaast staan er in mijn componenten palet nog wel een tiental componenten waarvan ik weet hoe ze heten en waar ze staan en waar ik nog nooit naar gekeken heb ;)

Hmmm lijkt dat UpdateSQL niet op meer dan 1 tabel werkt :( Was dat soms de reden dat ik 'm nooit heb gebruikt ;)

Cogito Ergo Credo


Verwijderd

Volgens mijn boek hier (Mastering Delphi 5, Marco Cantu) werkt het ook over meerdere tabellen..

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Topicstarter
Op maandag 10 december 2001 12:49 schreef hezik het volgende:
Volgens mijn boek hier (Mastering Delphi 5, Marco Cantu) werkt het ook over meerdere tabellen..
welke blz? ;) ik heb wel versie 6 van Cantu...

Cogito Ergo Credo


Verwijderd

[kort door de bocht mode]
Wanneer je UpdateSQL nodig hebt, heb je meestal een ontwerpfout gemaakt (in de database dan wel de client).
[/kort door de bocht mode]

Je kunt je read only dataset (door een join, subselect of union) hiermee quasi editten, maar dan nog alleen door zelf de juiste update, insert en delete queries te definieren. Dat kun je m.i. beter in de applicatie zelf oplossen.

Eenzelfde aversie heb ik trouwens voor 'RequestLive' queries. Doe niet net alsof queries tables zijn, maar gebruik insert, update en delete queries om de boel aan te passen.

Jep, ik ben puristisch, maar ik ben teveel rare dingen van de BDE en van ADO tegengekomen om dat niet te zijn... :)
Pagina: 1