Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapamiętać RTF w bazie MySQL, Mam problem z zapisywaniem w polu MEMO
AutorNET
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.04.2006

Ostrzeżenie: (0%)
-----


Witam,

Mam problem z zapisywaniem w bazie danych w polu MEMO ciągu sformatowanego (Rich Text Format):

struktura tabeli np:
CREATE TABLE `market_asort` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`opis` text default NULL,
PRIMARY KEY (`id`)
)

Gdy próbuję zapisać w polu OPIS ciąg RTF, pokazuje mi błąd tego typu: Column count doesn't match value count at row 1.

Czy ktoś może mi pomóc w tym zagadnieniu ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




pokaz jak to wkladasz. zapewne zapomniales o jakims polu w zapytaniu. najprawodopodobniej o id (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
tylko w sql pomin calego rtf, wstaw tylko 'xyz', no chyba ze masz to w zmiennej
Go to the top of the page
+Quote Post
AutorNET
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.04.2006

Ostrzeżenie: (0%)
-----


Dokładnie to realizuje mi to program napisany w Delphi. Cały ciąg RTF mam w tabeli Paradoxa także w polu Memo i tutaj działa dobrze - moge odczytywać i zapisywać bez problemu.
Błąd wyskakuje tylko wtedy, gdy próbuję zapisać taki ciąg w polu bazy MySQL. (Przy zapisywaniu innych rekordów, gdy pole OPIS jest puste jest OK).
Go to the top of the page
+Quote Post
elessar
post
Post #4





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 12.05.2003
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


To zalezy jak w tym delphi zapisujesz (recznie tworzysz sql, korzystasz z komponentow ) ale najprawdopodobniej w RTF masz apostrof. Jesli to nie o to chodzi to napiszesz z czego korzystasz.

Ten post edytował elessar 5.04.2006, 11:56:27
Go to the top of the page
+Quote Post
AutorNET
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.04.2006

Ostrzeżenie: (0%)
-----


DELPHI 2005.
Oczywiście korzystam z komponentu, ale zapytanie SQL tworzę ręcznie podstawiając dane ze zmiennych i wywołuję procedurę komponentu .ExecSQL('zapytanie');
Zasada jest taka. Wszystkie dane zapamiętuje w tabeli PARADOX. Potem łącze się z bazą danych MySQL i przenoszę te dane z tabeli PARADOX'a do MySQL'a.

kod zapytania SQL:

sSQL:= 'INSERT INTO market_asort '+
'(domena,kat,nazwa,miara,wymiar1t,wymiar1,wymiar2t,wymiar2,waga,cena,vat,prod
uc,gwar,gwar_id,stan,dostep,opis,cenawww,org_id)'+
'VALUES ('+IntToStr(Serwer.Domena)+','+
IntToStr(sprKat.Fields[0].AsInteger)+','+
''''+to_ISO1( tTabela.FieldByName('nazwa').AsString )+''', '+
''''+to_ISO1( tTabela.FieldByName('miara').AsString )+''','+
''''+to_ISO1( tTabela.FieldByName('wymiar1').AsString )+''','+
''''+to_ISO1( tTabela.FieldByName('wymiar1t').AsString )+''','+
''''+to_ISO1( tTabela.FieldByName('wymiar2').AsString )+''','+
''''+to_ISO1( tTabela.FieldByName('wymiar2t').AsString )+''','+
''''+to_ISO1( tTabela.FieldByName('waga').AsString )+''','+
CurrToStr(tTabela.FieldByName('cena').AsCurrency)+','+
IntToStr(sprVat.Fields[0].AsInteger)+','+
IntToStr(sprProduc.Fields[0].AsInteger)+','+
IntToStr(tTabela.FieldByName('gwar').AsInteger)+','+
IntToStr(sprGwar.Fields[0].AsInteger)+','+
IntToStr(tTabela.FieldByName('stan').AsInteger)+','+
IntToStr(tTabela.FieldByName('dostep').AsInteger)+','+
sOpis+
IntToStr(tTabela.FieldByName('CenaWWW').AsInteger)+','+
IntToStr(tTabela.FieldByName('id').AsInteger)+');';

try
msUpdateAsort.ExecSQL(sSQL);
tTabela.Edit;
tTabela.FieldByName('upd').AsBoolean:= False;
tTabela.Post;
except
ShowMessage('Niestety nie udało się dopisać !');
tTabela.Next;
end;

Krew mnie zalewa, bo 4 pierwsze rekordy ładnie przepisał, a przy kolejnych wyskakuje błąd. Jeśli wyłączyłem w kodzie, żeby w pole MySQL podstawiał ciąg pusty to taki rekord zostaje zapamiętany, a w przeciwnym przypadku wyskakuje błąd:

[1136] #21S01 Column count doesn't match value count at row 1:
Client: 4.1.10
Server: 4.1.11-Debian_4.3tld-log
Go to the top of the page
+Quote Post
elessar
post
Post #6





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 12.05.2003
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


No to tak jak juz mowilem musisz miec apostrof w AnsiStringu, musisz do niego slasha dodac.


A tak swoja droga to najlepiej dodawac przez komponent, wtedy nie musisz sie o nic martwic.

Query.Append();
Query.FieldByName("POLE").AsString = tTabela.FieldByName('nazwa').AsString;
(...)
Query.Post();

Zreszta widze w tym kodzie inne pulapki ale to nie forum o delphi (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
AutorNET
post
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.04.2006

Ostrzeżenie: (0%)
-----


To, co przedstawiłem, to kolejna próba uzyskania dobrego efektu.
Wróciłem do komponentu i ParamByName() i w końcu znalazłem problem.

do Parametru z cena byla podstawiana wartosc Currency zamiast Float i tutaj byl problem - juz jest OK.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 10:48