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 ? |
|
|
|
![]() |
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 |
|
|
|
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). |
|
|
|
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 |
|
|
|
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 |
|
|
|
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) |
|
|
|
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. |
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 10:48 |