[Delphi/ADO] Problemen met inserten datum in DB*

Pagina: 1
Acties:

  • AdLentis
  • Registratie: Mei 2000
  • Laatst online: 27-10-2025

AdLentis

Gadget Inspector

Topicstarter
Het gaat om deze query:
code:
1
2
3
4
UPDATE Folder SET 
Title='1"N10-47.0521 ' 
ModificationDate='2004-04-19 16:14' 
WHERE Id='{9C70061D-B1F2-4825-A846-117D5469B1CC}'


Ik stuur dit m.b.v. een TADOQuery in Delphi 5 naar SQL server (OLEDB). Vervolgens krijg ik deze melding:

"Unclosed quotation mark before the character string '2004-04-19 16?'" :?

Als ik die dubbele quote weghaal, of verdubbel, dan gaat het goed, maar krijg je dus 0 of 2 dubbele quotes. Als ik de 16:14 uit de datum-waarde weghaal, gaat het ook goed. Vanuit de Query Analyzer werkt het ook gewoon (zonder ADO...).

Mogelijke oplossingen:
- Query opsplitsen in 2 query's :|
- Data via query.open en edit/post bijwerken :X

Heeft iemand een ander idee/commentaar/meegemaakt/etc?

Ik ben tenminste niet altijd hypocriet!


  • Shadowman
  • Registratie: Januari 2002
  • Niet online
En als je die dubbele quote escaped werkt het dan wel goed :?

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Tja, dat heb je als je geen parametrized queries gebruikt. :)

Herschrijf je query eens zo:
code:
1
2
3
4
5
Query1.SQL.Text := 'UPDATE Folder SET Title = :p_Titel, Datum = :p_Datum ' +
                      'WHERE id = :p_Id';
Query1.ParamByName ('p_Titel').AsString := 'blaat''jdjdjdjdjd';
Query1.ParamByName ('p_Datum').AsDateTime := aDate;
.....


't Is al een tijd geleden dat ik nog wat met Delphi gedaan heb, en bovenstaande code maakt dan ook nog gewoon gebruik van de BDE componenten (TQuery)

https://fgheysels.github.io/


Verwijderd

Ik dacht dat in ADO de datum tussen # moest.

Dus:
mijnDatumVeld = #19-4-2004 18:41#

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Gewoon zoals whoami al aangeeft parametrized queries gebruiken. Works like a charm en je hoeft niet zelf alerlei kunstgrepen uit te gaan halen om bepaalde karakters te gaan escapen.

My personal website


  • AdLentis
  • Registratie: Mei 2000
  • Laatst online: 27-10-2025

AdLentis

Gadget Inspector

Topicstarter
@ Shadowman:
Ja, dan gaat het wel goed, maar dan zie je dus wel weer 2 dubbele quotes, alsof hij helemaal niet escaped is. :X

@ whoami & OZ-Gump:
Als ik parameterized queries gebruik, dan worden tekstvelden aangevuld met spaties, tot hun maximale lengte. Op deze manier was ik eindelijk van dat probleem af. :?

@ _Pietje_:
Dat zal ik nog 's nakijken en proberen. B)

@ Iedereen:
De query wordt opgebouwd door een universele UpdateRecordData functie. Verder ligt het probleem niet specifiek aan de opbouw van het datumveld, want als ik in het title-veld geen oneven aantal dubbele quotes gebruik werkt alles prima. Het probleem was eigenlijk dat ik die dubbele quote niet in de database kreeg. Pas later (na experimenteren) bleek dat het wel goed ging als ik iets aan die datum wijzigde. De nieuwe topic-titel geeft dus niet het echte probleem aan. ;) Ik geef wel toe dat de originele titel een beetje vaag was... maar dat was het probleem ook.

[ Voor 7% gewijzigd door AdLentis op 20-04-2004 11:35 ]

Ik ben tenminste niet altijd hypocriet!


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
AdLentis schreef op 20 april 2004 @ 11:31:

@ whoami & OZ-Gump:
Als ik parameterized queries gebruik, dan worden tekstvelden aangevuld met spaties, tot hun maximale lengte. Op deze manier was ik eindelijk van dat probleem af. :?
Van welk type zijn die tekstvelden in je databank ? CHAR of VARCHAR ?

Als het CHAR velden zijn, dan worden ze idd aangevuld met spaties.

[ Voor 9% gewijzigd door whoami op 20-04-2004 11:52 ]

https://fgheysels.github.io/


  • AdLentis
  • Registratie: Mei 2000
  • Laatst online: 27-10-2025

AdLentis

Gadget Inspector

Topicstarter
whoami schreef op 20 april 2004 @ 11:52:
[...]

Van welk type zijn die tekstvelden in je databank ? CHAR of VARCHAR ?

Als het CHAR velden zijn, dan worden ze idd aangevuld met spaties.
Het zijn NVARCHAR velden... (da's unicode varchar geloof ik...)

Ik ben tenminste niet altijd hypocriet!


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Welke databank gebruik je?

offtopic:
Waarom is het .NET framework nog niet stabiel?

https://fgheysels.github.io/


  • AdLentis
  • Registratie: Mei 2000
  • Laatst online: 27-10-2025

AdLentis

Gadget Inspector

Topicstarter
whoami schreef op 20 april 2004 @ 12:03:
Welke databank gebruik je?

offtopic:
Waarom is het .NET framework nog niet stabiel?
SQL Server 2000. Ik heb overigens al uitgevonden hoe het spatie-probleem opgelost lijkt te zijn. Parameters vul je via de property 'Value'. Als ik naast het vullen ook de property DataType op ftString zet, dan werkt het wel. In ieder geval voor het title veld.

offtopic:
Bijvoorbeeld: debuggen in ASP.NET, mijn collega loopt daar af en toe tegen nogal vreemde situaties aan, de debugger zeurt over variabelen die hij een half uur eerder uit de code gegooid heeft. Herstarten van de PC is dan de enige uitweg. Ander voorbeeld: een ASP.NET applicatie ontwikkeld in C# kan niet starten vanaf een netwerkschijf. Maar goed, delphi 5 heeft ook zo zijn bugs.

Ik ben tenminste niet altijd hypocriet!


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
AdLentis schreef op 20 april 2004 @ 12:26:
[...]

offtopic:
Bijvoorbeeld: debuggen in ASP.NET, mijn collega loopt daar af en toe tegen nogal vreemde situaties aan, de debugger zeurt over variabelen die hij een half uur eerder uit de code gegooid heeft. Herstarten van de PC is dan de enige uitweg. Ander voorbeeld: een ASP.NET applicatie ontwikkeld in C# kan niet starten vanaf een netwerkschijf. Maar goed, delphi 5 heeft ook zo zijn bugs.
offtopic:
Hmm, dat je een .NET applicatie niet kunt starten van een netwerkshare is geen bug; dat heeft te maken met het beveiligingsbeleid en de mate waarin een assembly trusted is op een andere pc.
ASP.NET applicaties moeten zowiezo in een virtual directory staan
Dat van die variablen kan verschillende oorzaken hebben; misschien lost een 'rebuild all' het probleem ook wel op.

https://fgheysels.github.io/

Pagina: 1